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