···11+# sheetr
22+33+Monorepo for Sheetr and it's associated libraries.
44+55+> NOTE: Libraries under the [`/alicia/`](/alicia/) directory will eventually be
66+pulled out into their own repo when ready. As of current they are unstable and
77+rely/will rely on path dependencies within this monorepo.
88+99+## Development
1010+Sheetr provides a `flake.nix` for use with the Nix package manager. This can be
1111+installed independently from your existing package manager as shown
1212+[here](https://nixos.org/download/). It is very possible (and fairly easy) to
1313+develop this project without Nix, however Nix helps ensure you are using the
1414+exact same devenv as everyone else.
1515+1616+### Generating code from Lexicons
1717+A useful helper is provided via the Nix flake.
1818+```bash
1919+nix run .#lexgen
2020+2121+# without Nix
2222+cd shared
2323+gleam run -m alicia/lexgen -- --dir=../lexicons
2424+```
+32
TODO.md
···11+# alicia
22+33+## alicia_lexgen
44+55+- [ ] Codegen
66+- [ ] 100% spec coverage
77+ - [x] Coverage for Sheetr lexicons
88+- [ ] Ability to fetch lexicon schemas from internet/git
99+- [ ] Possibly move parsing/gen into an `alicia_lex` or `alicia_lexicon` package
1010+ and have `alicia_lexgen` as a pure CLI package.
1111+- [ ] Extract codegen library or use an external one.
1212+1313+## alicia_api
1414+1515+> Waiting on `lexgen`
1616+1717+- [ ] Generated code
1818+ - [ ] `com.atproto.*`
1919+ - [ ] `app.bsky.*`
2020+2121+## alicia_identity
2222+2323+## alicia_oauth
2424+2525+## xrpc
2626+Possibly have XRPC client libraries which are thin wrappers around existing HTTP
2727+clients like `httpc` or JavaScript's `fetch`. Could also provide helper package
2828+for `lustre` users that provides functions that return `effect`s instead/as well.
2929+3030+## crypto/common/syntax/repo
3131+All might be needed, unsure as to the exact architecture that will be used as of
3232+current so can't say for certain.
···11+# alicia_identity
22+33+[](https://hex.pm/packages/alicia_identity)
44+[](https://hexdocs.pm/alicia_identity/)
55+66+```sh
77+gleam add alicia_identity@1
88+```
99+```gleam
1010+import alicia_identity
1111+1212+pub fn main() -> Nil {
1313+ // TODO: An example of the project in use
1414+}
1515+```
1616+1717+Further documentation can be found at <https://hexdocs.pm/alicia_identity>.
1818+1919+## Development
2020+2121+```sh
2222+gleam run # Run the project
2323+gleam test # Run the tests
2424+```
+19
alicia/identity/gleam.toml
···11+name = "alicia_identity"
22+version = "1.0.0"
33+44+# Fill out these fields if you intend to generate HTML documentation or publish
55+# your project to the Hex package manager.
66+#
77+# description = ""
88+# licences = ["Apache-2.0"]
99+# repository = { type = "github", user = "", repo = "" }
1010+# links = [{ title = "Website", href = "" }]
1111+#
1212+# For a full reference of all the available options, you can have a look at
1313+# https://gleam.run/writing-gleam/gleam-toml/.
1414+1515+[dependencies]
1616+gleam_stdlib = ">= 0.44.0 and < 2.0.0"
1717+1818+[dev-dependencies]
1919+gleeunit = ">= 1.0.0 and < 2.0.0"
+11
alicia/identity/manifest.toml
···11+# This file was generated by Gleam
22+# You typically do not need to edit this file
33+44+packages = [
55+ { name = "gleam_stdlib", version = "0.67.1", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "6CE3E4189A8B8EC2F73AB61A2FBDE49F159D6C9C61C49E3B3082E439F260D3D0" },
66+ { name = "gleeunit", version = "1.9.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "DA9553CE58B67924B3C631F96FE3370C49EB6D6DC6B384EC4862CC4AAA718F3C" },
77+]
88+99+[requirements]
1010+gleam_stdlib = { version = ">= 0.44.0 and < 2.0.0" }
1111+gleeunit = { version = ">= 1.0.0 and < 2.0.0" }
alicia/identity/src/alicia/identity.gleam
This is a binary file and will not be displayed.
+13
alicia/identity/test/alicia_identity_test.gleam
···11+import gleeunit
22+33+pub fn main() -> Nil {
44+ gleeunit.main()
55+}
66+77+// gleeunit test functions end in `_test`
88+pub fn hello_world_test() {
99+ let name = "Joe"
1010+ let greeting = "Hello, " <> name <> "!"
1111+1212+ assert greeting == "Hello, Joe!"
1313+}
···11+# alicia_lexgen
22+33+[](https://hex.pm/packages/alicia_lexgen)
44+[](https://hexdocs.pm/alicia_lexgen/)
55+66+```sh
77+gleam add alicia_lexgen@1
88+```
99+```gleam
1010+import alicia_lexgen
1111+1212+pub fn main() -> Nil {
1313+ // TODO: An example of the project in use
1414+}
1515+```
1616+1717+Further documentation can be found at <https://hexdocs.pm/alicia_lexgen>.
1818+1919+## Development
2020+2121+```sh
2222+gleam run # Run the project
2323+gleam test # Run the tests
2424+```
+25
alicia/lexgen/gleam.toml
···11+name = "alicia_lexgen"
22+version = "1.0.0"
33+44+# Fill out these fields if you intend to generate HTML documentation or publish
55+# your project to the Hex package manager.
66+#
77+# description = ""
88+# licences = ["Apache-2.0"]
99+# repository = { type = "github", user = "", repo = "" }
1010+# links = [{ title = "Website", href = "" }]
1111+#
1212+# For a full reference of all the available options, you can have a look at
1313+# https://gleam.run/writing-gleam/gleam-toml/.
1414+1515+[dependencies]
1616+gleam_stdlib = ">= 0.44.0 and < 2.0.0"
1717+simplifile = ">= 2.3.2 and < 3.0.0"
1818+gleam_json = ">= 3.1.0 and < 4.0.0"
1919+glint = ">= 1.2.1 and < 2.0.0"
2020+argv = ">= 1.0.2 and < 2.0.0"
2121+snag = ">= 1.2.0 and < 2.0.0"
2222+pprint = ">= 1.0.6 and < 2.0.0"
2323+2424+[dev-dependencies]
2525+gleeunit = ">= 1.0.0 and < 2.0.0"
+28
alicia/lexgen/manifest.toml
···11+# This file was generated by Gleam
22+# You typically do not need to edit this file
33+44+packages = [
55+ { name = "argv", version = "1.0.2", build_tools = ["gleam"], requirements = [], otp_app = "argv", source = "hex", outer_checksum = "BA1FF0929525DEBA1CE67256E5ADF77A7CDDFE729E3E3F57A5BDCAA031DED09D" },
66+ { name = "filepath", version = "1.1.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "filepath", source = "hex", outer_checksum = "B06A9AF0BF10E51401D64B98E4B627F1D2E48C154967DA7AF4D0914780A6D40A" },
77+ { name = "glam", version = "2.0.3", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "glam", source = "hex", outer_checksum = "237C2CE218A2A0A5D46D625F8EF5B78F964BC91018B78D692B17E1AB84295229" },
88+ { name = "gleam_community_ansi", version = "1.4.3", build_tools = ["gleam"], requirements = ["gleam_community_colour", "gleam_regexp", "gleam_stdlib"], otp_app = "gleam_community_ansi", source = "hex", outer_checksum = "8A62AE9CC6EA65BEA630D95016D6C07E4F9973565FA3D0DE68DC4200D8E0DD27" },
99+ { name = "gleam_community_colour", version = "2.0.2", build_tools = ["gleam"], requirements = ["gleam_json", "gleam_stdlib"], otp_app = "gleam_community_colour", source = "hex", outer_checksum = "E34DD2C896AC3792151EDA939DA435FF3B69922F33415ED3C4406C932FBE9634" },
1010+ { name = "gleam_json", version = "3.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_json", source = "hex", outer_checksum = "44FDAA8847BE8FC48CA7A1C089706BD54BADCC4C45B237A992EDDF9F2CDB2836" },
1111+ { name = "gleam_regexp", version = "1.1.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_regexp", source = "hex", outer_checksum = "9C215C6CA84A5B35BB934A9B61A9A306EC743153BE2B0425A0D032E477B062A9" },
1212+ { name = "gleam_stdlib", version = "0.67.1", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "6CE3E4189A8B8EC2F73AB61A2FBDE49F159D6C9C61C49E3B3082E439F260D3D0" },
1313+ { name = "gleeunit", version = "1.9.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "DA9553CE58B67924B3C631F96FE3370C49EB6D6DC6B384EC4862CC4AAA718F3C" },
1414+ { name = "glint", version = "1.2.1", build_tools = ["gleam"], requirements = ["gleam_community_ansi", "gleam_community_colour", "gleam_stdlib", "snag"], otp_app = "glint", source = "hex", outer_checksum = "2214C7CEFDE457CEE62140C3D4899B964E05236DA74E4243DFADF4AF29C382BB" },
1515+ { name = "pprint", version = "1.0.6", build_tools = ["gleam"], requirements = ["glam", "gleam_stdlib"], otp_app = "pprint", source = "hex", outer_checksum = "4E9B34AE03B2E81D60F230B9BAF1792BE1AC37AFB5564B8DEBEE56BAEC866B7D" },
1616+ { name = "simplifile", version = "2.3.2", build_tools = ["gleam"], requirements = ["filepath", "gleam_stdlib"], otp_app = "simplifile", source = "hex", outer_checksum = "E049B4DACD4D206D87843BCF4C775A50AE0F50A52031A2FFB40C9ED07D6EC70A" },
1717+ { name = "snag", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "snag", source = "hex", outer_checksum = "274F41D6C3ECF99F7686FDCE54183333E41D2C1CA5A3A673F9A8B2C7A4401077" },
1818+]
1919+2020+[requirements]
2121+argv = { version = ">= 1.0.2 and < 2.0.0" }
2222+gleam_json = { version = ">= 3.1.0 and < 4.0.0" }
2323+gleam_stdlib = { version = ">= 0.44.0 and < 2.0.0" }
2424+gleeunit = { version = ">= 1.0.0 and < 2.0.0" }
2525+glint = { version = ">= 1.2.1 and < 2.0.0" }
2626+pprint = { version = ">= 1.0.6 and < 2.0.0" }
2727+simplifile = { version = ">= 2.3.2 and < 3.0.0" }
2828+snag = { version = ">= 1.2.0 and < 2.0.0" }
···11+# sheetr_server
22+33+[](https://hex.pm/packages/sheetr_server)
44+[](https://hexdocs.pm/sheetr_server/)
55+66+```sh
77+gleam add sheetr_server@1
88+```
99+```gleam
1010+import sheetr_server
1111+1212+pub fn main() -> Nil {
1313+ // TODO: An example of the project in use
1414+}
1515+```
1616+1717+Further documentation can be found at <https://hexdocs.pm/sheetr_server>.
1818+1919+## Development
2020+2121+```sh
2222+gleam run # Run the project
2323+gleam test # Run the tests
2424+```
+19
backend/gleam.toml
···11+name = "sheetr_server"
22+version = "1.0.0"
33+44+# Fill out these fields if you intend to generate HTML documentation or publish
55+# your project to the Hex package manager.
66+#
77+# description = ""
88+# licences = ["Apache-2.0"]
99+# repository = { type = "github", user = "", repo = "" }
1010+# links = [{ title = "Website", href = "" }]
1111+#
1212+# For a full reference of all the available options, you can have a look at
1313+# https://gleam.run/writing-gleam/gleam-toml/.
1414+1515+[dependencies]
1616+gleam_stdlib = ">= 0.44.0 and < 2.0.0"
1717+1818+[dev-dependencies]
1919+gleeunit = ">= 1.0.0 and < 2.0.0"
···11+# sheetr_client
22+33+[](https://hex.pm/packages/sheetr_client)
44+[](https://hexdocs.pm/sheetr_client/)
55+66+```sh
77+gleam add sheetr_client@1
88+```
99+```gleam
1010+import sheetr_client
1111+1212+pub fn main() -> Nil {
1313+ // TODO: An example of the project in use
1414+}
1515+```
1616+1717+Further documentation can be found at <https://hexdocs.pm/sheetr_client>.
1818+1919+## Development
2020+2121+```sh
2222+gleam run # Run the project
2323+gleam test # Run the tests
2424+```
+19
frontend/gleam.toml
···11+name = "sheetr_client"
22+version = "1.0.0"
33+44+# Fill out these fields if you intend to generate HTML documentation or publish
55+# your project to the Hex package manager.
66+#
77+# description = ""
88+# licences = ["Apache-2.0"]
99+# repository = { type = "github", user = "", repo = "" }
1010+# links = [{ title = "Website", href = "" }]
1111+#
1212+# For a full reference of all the available options, you can have a look at
1313+# https://gleam.run/writing-gleam/gleam-toml/.
1414+1515+[dependencies]
1616+gleam_stdlib = ">= 0.44.0 and < 2.0.0"
1717+1818+[dev-dependencies]
1919+gleeunit = ">= 1.0.0 and < 2.0.0"
···11+# sheetr_shared
22+33+[](https://hex.pm/packages/sheetr_shared)
44+[](https://hexdocs.pm/sheetr_shared/)
55+66+```sh
77+gleam add sheetr_shared@1
88+```
99+```gleam
1010+import sheetr_shared
1111+1212+pub fn main() -> Nil {
1313+ // TODO: An example of the project in use
1414+}
1515+```
1616+1717+Further documentation can be found at <https://hexdocs.pm/sheetr_shared>.
1818+1919+## Development
2020+2121+```sh
2222+gleam run # Run the project
2323+gleam test # Run the tests
2424+```
+20
shared/gleam.toml
···11+name = "sheetr_shared"
22+version = "1.0.0"
33+44+# Fill out these fields if you intend to generate HTML documentation or publish
55+# your project to the Hex package manager.
66+#
77+# description = ""
88+# licences = ["Apache-2.0"]
99+# repository = { type = "github", user = "", repo = "" }
1010+# links = [{ title = "Website", href = "" }]
1111+#
1212+# For a full reference of all the available options, you can have a look at
1313+# https://gleam.run/writing-gleam/gleam-toml/.
1414+1515+[dependencies]
1616+gleam_stdlib = ">= 0.44.0 and < 2.0.0"
1717+1818+[dev-dependencies]
1919+gleeunit = ">= 1.0.0 and < 2.0.0"
2020+alicia_lexgen = { path = "../alicia/lexgen" }
+24
shared/manifest.toml
···11+# This file was generated by Gleam
22+# You typically do not need to edit this file
33+44+packages = [
55+ { name = "alicia_lexgen", version = "1.0.0", build_tools = ["gleam"], requirements = ["argv", "gleam_json", "gleam_stdlib", "glint", "pprint", "simplifile", "snag"], source = "local", path = "../alicia/lexgen" },
66+ { name = "argv", version = "1.0.2", build_tools = ["gleam"], requirements = [], otp_app = "argv", source = "hex", outer_checksum = "BA1FF0929525DEBA1CE67256E5ADF77A7CDDFE729E3E3F57A5BDCAA031DED09D" },
77+ { name = "filepath", version = "1.1.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "filepath", source = "hex", outer_checksum = "B06A9AF0BF10E51401D64B98E4B627F1D2E48C154967DA7AF4D0914780A6D40A" },
88+ { name = "glam", version = "2.0.3", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "glam", source = "hex", outer_checksum = "237C2CE218A2A0A5D46D625F8EF5B78F964BC91018B78D692B17E1AB84295229" },
99+ { name = "gleam_community_ansi", version = "1.4.3", build_tools = ["gleam"], requirements = ["gleam_community_colour", "gleam_regexp", "gleam_stdlib"], otp_app = "gleam_community_ansi", source = "hex", outer_checksum = "8A62AE9CC6EA65BEA630D95016D6C07E4F9973565FA3D0DE68DC4200D8E0DD27" },
1010+ { name = "gleam_community_colour", version = "2.0.2", build_tools = ["gleam"], requirements = ["gleam_json", "gleam_stdlib"], otp_app = "gleam_community_colour", source = "hex", outer_checksum = "E34DD2C896AC3792151EDA939DA435FF3B69922F33415ED3C4406C932FBE9634" },
1111+ { name = "gleam_json", version = "3.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_json", source = "hex", outer_checksum = "44FDAA8847BE8FC48CA7A1C089706BD54BADCC4C45B237A992EDDF9F2CDB2836" },
1212+ { name = "gleam_regexp", version = "1.1.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_regexp", source = "hex", outer_checksum = "9C215C6CA84A5B35BB934A9B61A9A306EC743153BE2B0425A0D032E477B062A9" },
1313+ { name = "gleam_stdlib", version = "0.67.1", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "6CE3E4189A8B8EC2F73AB61A2FBDE49F159D6C9C61C49E3B3082E439F260D3D0" },
1414+ { name = "gleeunit", version = "1.9.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "DA9553CE58B67924B3C631F96FE3370C49EB6D6DC6B384EC4862CC4AAA718F3C" },
1515+ { name = "glint", version = "1.2.1", build_tools = ["gleam"], requirements = ["gleam_community_ansi", "gleam_community_colour", "gleam_stdlib", "snag"], otp_app = "glint", source = "hex", outer_checksum = "2214C7CEFDE457CEE62140C3D4899B964E05236DA74E4243DFADF4AF29C382BB" },
1616+ { name = "pprint", version = "1.0.6", build_tools = ["gleam"], requirements = ["glam", "gleam_stdlib"], otp_app = "pprint", source = "hex", outer_checksum = "4E9B34AE03B2E81D60F230B9BAF1792BE1AC37AFB5564B8DEBEE56BAEC866B7D" },
1717+ { name = "simplifile", version = "2.3.2", build_tools = ["gleam"], requirements = ["filepath", "gleam_stdlib"], otp_app = "simplifile", source = "hex", outer_checksum = "E049B4DACD4D206D87843BCF4C775A50AE0F50A52031A2FFB40C9ED07D6EC70A" },
1818+ { name = "snag", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "snag", source = "hex", outer_checksum = "274F41D6C3ECF99F7686FDCE54183333E41D2C1CA5A3A673F9A8B2C7A4401077" },
1919+]
2020+2121+[requirements]
2222+alicia_lexgen = { path = "../alicia/lexgen" }
2323+gleam_stdlib = { version = ">= 0.44.0 and < 2.0.0" }
2424+gleeunit = { version = ">= 1.0.0 and < 2.0.0" }