diff --git a/.envrc b/.envrc index 1d953f4..3550a30 100644 --- a/.envrc +++ b/.envrc @@ -1 +1 @@ -use nix +use flake diff --git a/.gitignore b/.gitignore index 20d5a08..9624092 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,3 @@ -# Ignore challenge submissions to prevent bloating git repo -/assets/ - -# Ignore challenge data files -/data/ - -# Added by cargo /target - -.env -*.db \ No newline at end of file +.direnv +result diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..80cb5c9 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "rust-analyzer.linkedProjects": [ + "./tegakituesday/Cargo.toml", + ] +} diff --git a/Cargo.toml b/Cargo.toml index c5a00f4..dd51e62 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,29 +1,3 @@ -[package] -name = "tegakituesday" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -accept-language = "2.0.0" -chrono = { version = "0.4.26", features = ["serde"] } -clap = "4.3.9" -comrak = "0.18.0" -derive_more = "0.99.17" -dotenv = "0.15.0" -gettext = "0.4.0" -gh-emoji = "1.0.7" -poise = "0.5.5" -r2d2 = "0.8.10" -r2d2_sqlite = "0.22.0" -regex = "1.8.4" -reqwest = "0.11.18" -rocket = { version = "=0.5.0-rc.3", features = ["secrets", "json"] } -rocket_contrib = { version = "0.4.11", features = ["templates"] } -rocket_dyn_templates = { version = "0.1.0-rc.3", features = ["tera"] } -rusqlite = { version = "0.29.0", features = ["chrono"] } -serde = "1.0.163" -serde_json = "1.0.96" -serde_yaml = "0.9.21" -tokio = { version = "1.29.0", features = ["macros", "rt-multi-thread"] } +[workspace] +members = ["tegakituesday"] +resolver = "2" diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..ce591ca --- /dev/null +++ b/flake.lock @@ -0,0 +1,96 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1681202837, + "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "cfacdce06f30d2b68473a46042957675eebb3401", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1693377291, + "narHash": "sha256-vYGY9bnqEeIncNarDZYhm6KdLKgXMS+HA2mTRaWEc80=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e7f38be3775bab9659575f192ece011c033655f0", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1681358109, + "narHash": "sha256-eKyxW4OohHQx9Urxi7TQlFBTDWII+F+x2hklDOQPB50=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "96ba1c52e54e74c3197f4d43026b3f3d92e83ff9", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs", + "rust-overlay": "rust-overlay" + } + }, + "rust-overlay": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1693447852, + "narHash": "sha256-K9npbs4S6+r51vpiElJi+0vwbAeftCAcOGbot/PCBnQ=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "40e851593ef4f9f8cd0b69c8cae7b722b9953a23", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..b17cb16 --- /dev/null +++ b/flake.nix @@ -0,0 +1,118 @@ +/* +Some utility commands: +- `nix flake update --commit-lock-file` +- `nix flake lock update-input ` +- `nix build .#tegakituesday` or `nix build .` +- `nix run .#tegakituesday` or `nix run .` +*/ + +{ + description = "The website for the Tegaki Tuesday handwriting challenge."; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + rust-overlay.url = "github:oxalica/rust-overlay"; + }; + + outputs = { self, nixpkgs, rust-overlay }: + let + overlays = [ (import rust-overlay) ]; + system = "x86_64-linux"; + pkgs = import nixpkgs { + inherit system overlays; + }; + rust = pkgs.rust-bin.nightly.latest; + rust-bin = rust.minimal; + rustPlatform = pkgs.makeRustPlatform { + cargo = rust-bin; + rustc = rust-bin; + }; + rustSettings = with pkgs; { + src = ./.; + cargoHash = nixpkgs.lib.fakeHash; + }; + meta = with nixpkgs.lib; { + homepage = "https://tegakituesday.com"; + #license = [ licenses.unfree ]; + platforms = [ system ]; + maintainers = with maintainers; [ elnudev ]; + }; + in { + devShells.${system}.default = with pkgs; mkShell { + packages = [ + (pkgs.rust-bin.nightly.latest.default.override { + extensions = [ "rust-src" ]; + }) + cargo-edit + bacon + ]; + inputsFrom = with self.packages.${system}; [ tegakituesday ]; + allowUnfree = true; + }; + packages.${system} = { + default = self.packages.${system}.tegakituesday; + tegakituesday = rustPlatform.buildRustPackage (rustSettings // { + pname = "tegakituesday"; + version = "0.1.0"; + nativeBuildInputs = with pkgs; [ pkg-config dart-sass ]; + buildInputs = with pkgs; [ openssl gettext sqlite ]; + buildAndTestSubdir = "tegakituesday"; + cargoHash = "sha256-FBQGBUmLjg1CWFVBlbAqNfRCdIWyuqvlPzpBdOjYLbc="; + postPatch = '' + pushd tegakituesday + sass styles/sass/style.sass:$out/share/styles/css/style.css + if [ -d assets ]; then + cp -r assets $out/share + else + mkdir -p $out/share/assets + fi + cp -r static $out/share + sed -i -E "s|relative\!\(\"([^\"]+)\"\)|\"''${out}\/share\/\1\"|" src/main.rs + popd + ''; + meta = meta // { + description = "The website for the Tegaki Tuesday handwriting challenge."; + }; + }); + }; + /* + nixosModules.default = { config, ... }: let + lib = nixpkgs.lib; + in { + options.services.tegakituesday = { + enable = lib.mkEnableOption (lib.mdDoc "tegakituesday service"); + package = lib.mkOption { + type = lib.types.package; + default = self.packages.${system}.tegakituesday; + defaultText = "pkgs.tegakituesday"; + description = lib.mdDoc '' + The tegakituesday package that should be used. + ''; + }; + port = lib.mkOption { + type = lib.types.port; + default = 8000; + description = lib.mdDoc '' + The port at which to run. + ''; + }; + }; + config.systemd.services.tegakituesday = let + cfg = config.services.tegakituesday; + pkg = self.packages.${system}.tegakituesday; + in lib.mkIf cfg.enable { + description = pkg.meta.description; + after = [ "network.target" ]; + wantedBy = [ "network.target" ]; + serviceConfig = { + ExecStart = '' + ${cfg.package}/bin/tegakituesday --port ${builtins.toString cfg.port} + ''; + Restart = "always"; + DynamicUser = true; + }; + }; + }; + */ + }; +} diff --git a/shell.nix b/shell.nix deleted file mode 100644 index 7f6b223..0000000 --- a/shell.nix +++ /dev/null @@ -1,24 +0,0 @@ -# -{ pkgs ? import {}}: - -let - rust_overlay = import (builtins.fetchTarball "https://github.com/oxalica/rust-overlay/archive/master.tar.gz"); - pkgs = import { overlays = [ rust_overlay ]; }; - rustnightly = (pkgs.rust-bin.nightly.latest.default.override { - extensions = [ - "rust-src" - ]; - }); -in -pkgs.mkShell { - buildInputs = with pkgs; [ - rustnightly - rust-analyzer - bacon - pkg-config - openssl - gettext - sqlite - dart-sass - ]; -} diff --git a/.env.example b/tegakituesday/.env.example similarity index 100% rename from .env.example rename to tegakituesday/.env.example diff --git a/tegakituesday/.gitignore b/tegakituesday/.gitignore new file mode 100644 index 0000000..a1b72c7 --- /dev/null +++ b/tegakituesday/.gitignore @@ -0,0 +1,8 @@ +# Ignore challenge submissions to prevent bloating git repo +/assets/ + +# Ignore challenge data files +/data/ + +.env +*.db diff --git a/tegakituesday/Cargo.toml b/tegakituesday/Cargo.toml new file mode 100644 index 0000000..c5a00f4 --- /dev/null +++ b/tegakituesday/Cargo.toml @@ -0,0 +1,29 @@ +[package] +name = "tegakituesday" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +accept-language = "2.0.0" +chrono = { version = "0.4.26", features = ["serde"] } +clap = "4.3.9" +comrak = "0.18.0" +derive_more = "0.99.17" +dotenv = "0.15.0" +gettext = "0.4.0" +gh-emoji = "1.0.7" +poise = "0.5.5" +r2d2 = "0.8.10" +r2d2_sqlite = "0.22.0" +regex = "1.8.4" +reqwest = "0.11.18" +rocket = { version = "=0.5.0-rc.3", features = ["secrets", "json"] } +rocket_contrib = { version = "0.4.11", features = ["templates"] } +rocket_dyn_templates = { version = "0.1.0-rc.3", features = ["tera"] } +rusqlite = { version = "0.29.0", features = ["chrono"] } +serde = "1.0.163" +serde_json = "1.0.96" +serde_yaml = "0.9.21" +tokio = { version = "1.29.0", features = ["macros", "rt-multi-thread"] } diff --git a/Rocket.toml b/tegakituesday/Rocket.toml similarity index 100% rename from Rocket.toml rename to tegakituesday/Rocket.toml diff --git a/_resources/computer-fonts-original.png b/tegakituesday/_resources/computer-fonts-original.png similarity index 100% rename from _resources/computer-fonts-original.png rename to tegakituesday/_resources/computer-fonts-original.png diff --git a/_resources/computer-fonts.xcf b/tegakituesday/_resources/computer-fonts.xcf similarity index 100% rename from _resources/computer-fonts.xcf rename to tegakituesday/_resources/computer-fonts.xcf diff --git a/_resources/g.xcf b/tegakituesday/_resources/g.xcf similarity index 100% rename from _resources/g.xcf rename to tegakituesday/_resources/g.xcf diff --git a/_resources/tree-original.png b/tegakituesday/_resources/tree-original.png similarity index 100% rename from _resources/tree-original.png rename to tegakituesday/_resources/tree-original.png diff --git a/_resources/tree.png b/tegakituesday/_resources/tree.png similarity index 100% rename from _resources/tree.png rename to tegakituesday/_resources/tree.png diff --git a/_resources/tree.xcf b/tegakituesday/_resources/tree.xcf similarity index 100% rename from _resources/tree.xcf rename to tegakituesday/_resources/tree.xcf diff --git a/_resources/types-of-strokes-original.jpg b/tegakituesday/_resources/types-of-strokes-original.jpg similarity index 100% rename from _resources/types-of-strokes-original.jpg rename to tegakituesday/_resources/types-of-strokes-original.jpg diff --git a/_resources/types-of-strokes.xcf b/tegakituesday/_resources/types-of-strokes.xcf similarity index 100% rename from _resources/types-of-strokes.xcf rename to tegakituesday/_resources/types-of-strokes.xcf diff --git a/content/_index.md b/tegakituesday/content/_index.md similarity index 100% rename from content/_index.md rename to tegakituesday/content/_index.md diff --git a/content/challenges/1.md b/tegakituesday/content/challenges/1.md similarity index 100% rename from content/challenges/1.md rename to tegakituesday/content/challenges/1.md diff --git a/content/challenges/10.md b/tegakituesday/content/challenges/10.md similarity index 100% rename from content/challenges/10.md rename to tegakituesday/content/challenges/10.md diff --git a/content/challenges/100.md b/tegakituesday/content/challenges/100.md similarity index 100% rename from content/challenges/100.md rename to tegakituesday/content/challenges/100.md diff --git a/content/challenges/101.md b/tegakituesday/content/challenges/101.md similarity index 100% rename from content/challenges/101.md rename to tegakituesday/content/challenges/101.md diff --git a/content/challenges/102.md b/tegakituesday/content/challenges/102.md similarity index 100% rename from content/challenges/102.md rename to tegakituesday/content/challenges/102.md diff --git a/content/challenges/103.md b/tegakituesday/content/challenges/103.md similarity index 100% rename from content/challenges/103.md rename to tegakituesday/content/challenges/103.md diff --git a/content/challenges/104.md b/tegakituesday/content/challenges/104.md similarity index 100% rename from content/challenges/104.md rename to tegakituesday/content/challenges/104.md diff --git a/content/challenges/105.md b/tegakituesday/content/challenges/105.md similarity index 100% rename from content/challenges/105.md rename to tegakituesday/content/challenges/105.md diff --git a/content/challenges/106.md b/tegakituesday/content/challenges/106.md similarity index 100% rename from content/challenges/106.md rename to tegakituesday/content/challenges/106.md diff --git a/content/challenges/107.md b/tegakituesday/content/challenges/107.md similarity index 100% rename from content/challenges/107.md rename to tegakituesday/content/challenges/107.md diff --git a/content/challenges/108.md b/tegakituesday/content/challenges/108.md similarity index 100% rename from content/challenges/108.md rename to tegakituesday/content/challenges/108.md diff --git a/content/challenges/109.md b/tegakituesday/content/challenges/109.md similarity index 100% rename from content/challenges/109.md rename to tegakituesday/content/challenges/109.md diff --git a/content/challenges/11.md b/tegakituesday/content/challenges/11.md similarity index 100% rename from content/challenges/11.md rename to tegakituesday/content/challenges/11.md diff --git a/content/challenges/110.md b/tegakituesday/content/challenges/110.md similarity index 100% rename from content/challenges/110.md rename to tegakituesday/content/challenges/110.md diff --git a/content/challenges/111.md b/tegakituesday/content/challenges/111.md similarity index 100% rename from content/challenges/111.md rename to tegakituesday/content/challenges/111.md diff --git a/content/challenges/112.md b/tegakituesday/content/challenges/112.md similarity index 100% rename from content/challenges/112.md rename to tegakituesday/content/challenges/112.md diff --git a/content/challenges/113.md b/tegakituesday/content/challenges/113.md similarity index 100% rename from content/challenges/113.md rename to tegakituesday/content/challenges/113.md diff --git a/content/challenges/114.md b/tegakituesday/content/challenges/114.md similarity index 100% rename from content/challenges/114.md rename to tegakituesday/content/challenges/114.md diff --git a/content/challenges/12.md b/tegakituesday/content/challenges/12.md similarity index 100% rename from content/challenges/12.md rename to tegakituesday/content/challenges/12.md diff --git a/content/challenges/13.md b/tegakituesday/content/challenges/13.md similarity index 100% rename from content/challenges/13.md rename to tegakituesday/content/challenges/13.md diff --git a/content/challenges/14.md b/tegakituesday/content/challenges/14.md similarity index 100% rename from content/challenges/14.md rename to tegakituesday/content/challenges/14.md diff --git a/content/challenges/15.md b/tegakituesday/content/challenges/15.md similarity index 100% rename from content/challenges/15.md rename to tegakituesday/content/challenges/15.md diff --git a/content/challenges/16.md b/tegakituesday/content/challenges/16.md similarity index 100% rename from content/challenges/16.md rename to tegakituesday/content/challenges/16.md diff --git a/content/challenges/17.md b/tegakituesday/content/challenges/17.md similarity index 100% rename from content/challenges/17.md rename to tegakituesday/content/challenges/17.md diff --git a/content/challenges/18.md b/tegakituesday/content/challenges/18.md similarity index 100% rename from content/challenges/18.md rename to tegakituesday/content/challenges/18.md diff --git a/content/challenges/19.md b/tegakituesday/content/challenges/19.md similarity index 100% rename from content/challenges/19.md rename to tegakituesday/content/challenges/19.md diff --git a/content/challenges/2.md b/tegakituesday/content/challenges/2.md similarity index 100% rename from content/challenges/2.md rename to tegakituesday/content/challenges/2.md diff --git a/content/challenges/20.md b/tegakituesday/content/challenges/20.md similarity index 100% rename from content/challenges/20.md rename to tegakituesday/content/challenges/20.md diff --git a/content/challenges/21.md b/tegakituesday/content/challenges/21.md similarity index 100% rename from content/challenges/21.md rename to tegakituesday/content/challenges/21.md diff --git a/content/challenges/22.md b/tegakituesday/content/challenges/22.md similarity index 100% rename from content/challenges/22.md rename to tegakituesday/content/challenges/22.md diff --git a/content/challenges/23.md b/tegakituesday/content/challenges/23.md similarity index 100% rename from content/challenges/23.md rename to tegakituesday/content/challenges/23.md diff --git a/content/challenges/24.md b/tegakituesday/content/challenges/24.md similarity index 100% rename from content/challenges/24.md rename to tegakituesday/content/challenges/24.md diff --git a/content/challenges/25.md b/tegakituesday/content/challenges/25.md similarity index 100% rename from content/challenges/25.md rename to tegakituesday/content/challenges/25.md diff --git a/content/challenges/26.md b/tegakituesday/content/challenges/26.md similarity index 100% rename from content/challenges/26.md rename to tegakituesday/content/challenges/26.md diff --git a/content/challenges/27.md b/tegakituesday/content/challenges/27.md similarity index 100% rename from content/challenges/27.md rename to tegakituesday/content/challenges/27.md diff --git a/content/challenges/28.md b/tegakituesday/content/challenges/28.md similarity index 100% rename from content/challenges/28.md rename to tegakituesday/content/challenges/28.md diff --git a/content/challenges/29.md b/tegakituesday/content/challenges/29.md similarity index 100% rename from content/challenges/29.md rename to tegakituesday/content/challenges/29.md diff --git a/content/challenges/3.md b/tegakituesday/content/challenges/3.md similarity index 100% rename from content/challenges/3.md rename to tegakituesday/content/challenges/3.md diff --git a/content/challenges/30.md b/tegakituesday/content/challenges/30.md similarity index 100% rename from content/challenges/30.md rename to tegakituesday/content/challenges/30.md diff --git a/content/challenges/31.md b/tegakituesday/content/challenges/31.md similarity index 100% rename from content/challenges/31.md rename to tegakituesday/content/challenges/31.md diff --git a/content/challenges/32.md b/tegakituesday/content/challenges/32.md similarity index 100% rename from content/challenges/32.md rename to tegakituesday/content/challenges/32.md diff --git a/content/challenges/33.md b/tegakituesday/content/challenges/33.md similarity index 100% rename from content/challenges/33.md rename to tegakituesday/content/challenges/33.md diff --git a/content/challenges/34.md b/tegakituesday/content/challenges/34.md similarity index 100% rename from content/challenges/34.md rename to tegakituesday/content/challenges/34.md diff --git a/content/challenges/35.md b/tegakituesday/content/challenges/35.md similarity index 100% rename from content/challenges/35.md rename to tegakituesday/content/challenges/35.md diff --git a/content/challenges/36.md b/tegakituesday/content/challenges/36.md similarity index 100% rename from content/challenges/36.md rename to tegakituesday/content/challenges/36.md diff --git a/content/challenges/37.md b/tegakituesday/content/challenges/37.md similarity index 100% rename from content/challenges/37.md rename to tegakituesday/content/challenges/37.md diff --git a/content/challenges/38.md b/tegakituesday/content/challenges/38.md similarity index 100% rename from content/challenges/38.md rename to tegakituesday/content/challenges/38.md diff --git a/content/challenges/39.md b/tegakituesday/content/challenges/39.md similarity index 100% rename from content/challenges/39.md rename to tegakituesday/content/challenges/39.md diff --git a/content/challenges/4.md b/tegakituesday/content/challenges/4.md similarity index 100% rename from content/challenges/4.md rename to tegakituesday/content/challenges/4.md diff --git a/content/challenges/40.md b/tegakituesday/content/challenges/40.md similarity index 100% rename from content/challenges/40.md rename to tegakituesday/content/challenges/40.md diff --git a/content/challenges/41.md b/tegakituesday/content/challenges/41.md similarity index 100% rename from content/challenges/41.md rename to tegakituesday/content/challenges/41.md diff --git a/content/challenges/42.md b/tegakituesday/content/challenges/42.md similarity index 100% rename from content/challenges/42.md rename to tegakituesday/content/challenges/42.md diff --git a/content/challenges/43.md b/tegakituesday/content/challenges/43.md similarity index 100% rename from content/challenges/43.md rename to tegakituesday/content/challenges/43.md diff --git a/content/challenges/44.md b/tegakituesday/content/challenges/44.md similarity index 100% rename from content/challenges/44.md rename to tegakituesday/content/challenges/44.md diff --git a/content/challenges/45.md b/tegakituesday/content/challenges/45.md similarity index 100% rename from content/challenges/45.md rename to tegakituesday/content/challenges/45.md diff --git a/content/challenges/46.md b/tegakituesday/content/challenges/46.md similarity index 100% rename from content/challenges/46.md rename to tegakituesday/content/challenges/46.md diff --git a/content/challenges/47.md b/tegakituesday/content/challenges/47.md similarity index 100% rename from content/challenges/47.md rename to tegakituesday/content/challenges/47.md diff --git a/content/challenges/48.md b/tegakituesday/content/challenges/48.md similarity index 100% rename from content/challenges/48.md rename to tegakituesday/content/challenges/48.md diff --git a/content/challenges/49.md b/tegakituesday/content/challenges/49.md similarity index 100% rename from content/challenges/49.md rename to tegakituesday/content/challenges/49.md diff --git a/content/challenges/5.md b/tegakituesday/content/challenges/5.md similarity index 100% rename from content/challenges/5.md rename to tegakituesday/content/challenges/5.md diff --git a/content/challenges/50.md b/tegakituesday/content/challenges/50.md similarity index 100% rename from content/challenges/50.md rename to tegakituesday/content/challenges/50.md diff --git a/content/challenges/51.md b/tegakituesday/content/challenges/51.md similarity index 100% rename from content/challenges/51.md rename to tegakituesday/content/challenges/51.md diff --git a/content/challenges/52.md b/tegakituesday/content/challenges/52.md similarity index 100% rename from content/challenges/52.md rename to tegakituesday/content/challenges/52.md diff --git a/content/challenges/53.md b/tegakituesday/content/challenges/53.md similarity index 100% rename from content/challenges/53.md rename to tegakituesday/content/challenges/53.md diff --git a/content/challenges/54.md b/tegakituesday/content/challenges/54.md similarity index 100% rename from content/challenges/54.md rename to tegakituesday/content/challenges/54.md diff --git a/content/challenges/55.md b/tegakituesday/content/challenges/55.md similarity index 100% rename from content/challenges/55.md rename to tegakituesday/content/challenges/55.md diff --git a/content/challenges/56.md b/tegakituesday/content/challenges/56.md similarity index 100% rename from content/challenges/56.md rename to tegakituesday/content/challenges/56.md diff --git a/content/challenges/57.md b/tegakituesday/content/challenges/57.md similarity index 100% rename from content/challenges/57.md rename to tegakituesday/content/challenges/57.md diff --git a/content/challenges/58.md b/tegakituesday/content/challenges/58.md similarity index 100% rename from content/challenges/58.md rename to tegakituesday/content/challenges/58.md diff --git a/content/challenges/59.md b/tegakituesday/content/challenges/59.md similarity index 100% rename from content/challenges/59.md rename to tegakituesday/content/challenges/59.md diff --git a/content/challenges/6.md b/tegakituesday/content/challenges/6.md similarity index 100% rename from content/challenges/6.md rename to tegakituesday/content/challenges/6.md diff --git a/content/challenges/60.md b/tegakituesday/content/challenges/60.md similarity index 100% rename from content/challenges/60.md rename to tegakituesday/content/challenges/60.md diff --git a/content/challenges/61.md b/tegakituesday/content/challenges/61.md similarity index 100% rename from content/challenges/61.md rename to tegakituesday/content/challenges/61.md diff --git a/content/challenges/62.md b/tegakituesday/content/challenges/62.md similarity index 100% rename from content/challenges/62.md rename to tegakituesday/content/challenges/62.md diff --git a/content/challenges/63.md b/tegakituesday/content/challenges/63.md similarity index 100% rename from content/challenges/63.md rename to tegakituesday/content/challenges/63.md diff --git a/content/challenges/64.md b/tegakituesday/content/challenges/64.md similarity index 100% rename from content/challenges/64.md rename to tegakituesday/content/challenges/64.md diff --git a/content/challenges/65.md b/tegakituesday/content/challenges/65.md similarity index 100% rename from content/challenges/65.md rename to tegakituesday/content/challenges/65.md diff --git a/content/challenges/66.md b/tegakituesday/content/challenges/66.md similarity index 100% rename from content/challenges/66.md rename to tegakituesday/content/challenges/66.md diff --git a/content/challenges/67.md b/tegakituesday/content/challenges/67.md similarity index 100% rename from content/challenges/67.md rename to tegakituesday/content/challenges/67.md diff --git a/content/challenges/68.md b/tegakituesday/content/challenges/68.md similarity index 100% rename from content/challenges/68.md rename to tegakituesday/content/challenges/68.md diff --git a/content/challenges/69.md b/tegakituesday/content/challenges/69.md similarity index 100% rename from content/challenges/69.md rename to tegakituesday/content/challenges/69.md diff --git a/content/challenges/7.md b/tegakituesday/content/challenges/7.md similarity index 100% rename from content/challenges/7.md rename to tegakituesday/content/challenges/7.md diff --git a/content/challenges/70.md b/tegakituesday/content/challenges/70.md similarity index 100% rename from content/challenges/70.md rename to tegakituesday/content/challenges/70.md diff --git a/content/challenges/71.md b/tegakituesday/content/challenges/71.md similarity index 100% rename from content/challenges/71.md rename to tegakituesday/content/challenges/71.md diff --git a/content/challenges/72.md b/tegakituesday/content/challenges/72.md similarity index 100% rename from content/challenges/72.md rename to tegakituesday/content/challenges/72.md diff --git a/content/challenges/73.md b/tegakituesday/content/challenges/73.md similarity index 100% rename from content/challenges/73.md rename to tegakituesday/content/challenges/73.md diff --git a/content/challenges/74.md b/tegakituesday/content/challenges/74.md similarity index 100% rename from content/challenges/74.md rename to tegakituesday/content/challenges/74.md diff --git a/content/challenges/75.md b/tegakituesday/content/challenges/75.md similarity index 100% rename from content/challenges/75.md rename to tegakituesday/content/challenges/75.md diff --git a/content/challenges/76.md b/tegakituesday/content/challenges/76.md similarity index 100% rename from content/challenges/76.md rename to tegakituesday/content/challenges/76.md diff --git a/content/challenges/77.md b/tegakituesday/content/challenges/77.md similarity index 100% rename from content/challenges/77.md rename to tegakituesday/content/challenges/77.md diff --git a/content/challenges/78.md b/tegakituesday/content/challenges/78.md similarity index 100% rename from content/challenges/78.md rename to tegakituesday/content/challenges/78.md diff --git a/content/challenges/79.md b/tegakituesday/content/challenges/79.md similarity index 100% rename from content/challenges/79.md rename to tegakituesday/content/challenges/79.md diff --git a/content/challenges/8.md b/tegakituesday/content/challenges/8.md similarity index 100% rename from content/challenges/8.md rename to tegakituesday/content/challenges/8.md diff --git a/content/challenges/80.md b/tegakituesday/content/challenges/80.md similarity index 100% rename from content/challenges/80.md rename to tegakituesday/content/challenges/80.md diff --git a/content/challenges/81.md b/tegakituesday/content/challenges/81.md similarity index 100% rename from content/challenges/81.md rename to tegakituesday/content/challenges/81.md diff --git a/content/challenges/82.md b/tegakituesday/content/challenges/82.md similarity index 100% rename from content/challenges/82.md rename to tegakituesday/content/challenges/82.md diff --git a/content/challenges/83.md b/tegakituesday/content/challenges/83.md similarity index 100% rename from content/challenges/83.md rename to tegakituesday/content/challenges/83.md diff --git a/content/challenges/84.md b/tegakituesday/content/challenges/84.md similarity index 100% rename from content/challenges/84.md rename to tegakituesday/content/challenges/84.md diff --git a/content/challenges/85.md b/tegakituesday/content/challenges/85.md similarity index 100% rename from content/challenges/85.md rename to tegakituesday/content/challenges/85.md diff --git a/content/challenges/86.md b/tegakituesday/content/challenges/86.md similarity index 100% rename from content/challenges/86.md rename to tegakituesday/content/challenges/86.md diff --git a/content/challenges/87.md b/tegakituesday/content/challenges/87.md similarity index 100% rename from content/challenges/87.md rename to tegakituesday/content/challenges/87.md diff --git a/content/challenges/88.md b/tegakituesday/content/challenges/88.md similarity index 100% rename from content/challenges/88.md rename to tegakituesday/content/challenges/88.md diff --git a/content/challenges/89.md b/tegakituesday/content/challenges/89.md similarity index 100% rename from content/challenges/89.md rename to tegakituesday/content/challenges/89.md diff --git a/content/challenges/9.md b/tegakituesday/content/challenges/9.md similarity index 100% rename from content/challenges/9.md rename to tegakituesday/content/challenges/9.md diff --git a/content/challenges/90.md b/tegakituesday/content/challenges/90.md similarity index 100% rename from content/challenges/90.md rename to tegakituesday/content/challenges/90.md diff --git a/content/challenges/91.md b/tegakituesday/content/challenges/91.md similarity index 100% rename from content/challenges/91.md rename to tegakituesday/content/challenges/91.md diff --git a/content/challenges/92.md b/tegakituesday/content/challenges/92.md similarity index 100% rename from content/challenges/92.md rename to tegakituesday/content/challenges/92.md diff --git a/content/challenges/93.md b/tegakituesday/content/challenges/93.md similarity index 100% rename from content/challenges/93.md rename to tegakituesday/content/challenges/93.md diff --git a/content/challenges/94.md b/tegakituesday/content/challenges/94.md similarity index 100% rename from content/challenges/94.md rename to tegakituesday/content/challenges/94.md diff --git a/content/challenges/95.md b/tegakituesday/content/challenges/95.md similarity index 100% rename from content/challenges/95.md rename to tegakituesday/content/challenges/95.md diff --git a/content/challenges/96.md b/tegakituesday/content/challenges/96.md similarity index 100% rename from content/challenges/96.md rename to tegakituesday/content/challenges/96.md diff --git a/content/challenges/97.md b/tegakituesday/content/challenges/97.md similarity index 100% rename from content/challenges/97.md rename to tegakituesday/content/challenges/97.md diff --git a/content/challenges/98.md b/tegakituesday/content/challenges/98.md similarity index 100% rename from content/challenges/98.md rename to tegakituesday/content/challenges/98.md diff --git a/content/challenges/99.md b/tegakituesday/content/challenges/99.md similarity index 100% rename from content/challenges/99.md rename to tegakituesday/content/challenges/99.md diff --git a/content/drafts/draft1.md b/tegakituesday/content/drafts/draft1.md similarity index 100% rename from content/drafts/draft1.md rename to tegakituesday/content/drafts/draft1.md diff --git a/i18n/.gitignore b/tegakituesday/i18n/.gitignore similarity index 100% rename from i18n/.gitignore rename to tegakituesday/i18n/.gitignore diff --git a/i18n/en.po b/tegakituesday/i18n/en.po similarity index 100% rename from i18n/en.po rename to tegakituesday/i18n/en.po diff --git a/i18n/ja.po b/tegakituesday/i18n/ja.po similarity index 100% rename from i18n/ja.po rename to tegakituesday/i18n/ja.po diff --git a/i18n/zh.po b/tegakituesday/i18n/zh.po similarity index 100% rename from i18n/zh.po rename to tegakituesday/i18n/zh.po diff --git a/settings.yaml b/tegakituesday/settings.yaml similarity index 100% rename from settings.yaml rename to tegakituesday/settings.yaml diff --git a/src/cookies.rs b/tegakituesday/src/cookies.rs similarity index 100% rename from src/cookies.rs rename to tegakituesday/src/cookies.rs diff --git a/src/i18n.rs b/tegakituesday/src/i18n.rs similarity index 100% rename from src/i18n.rs rename to tegakituesday/src/i18n.rs diff --git a/src/main.rs b/tegakituesday/src/main.rs similarity index 100% rename from src/main.rs rename to tegakituesday/src/main.rs diff --git a/src/models/challenge.rs b/tegakituesday/src/models/challenge.rs similarity index 100% rename from src/models/challenge.rs rename to tegakituesday/src/models/challenge.rs diff --git a/src/models/database.rs b/tegakituesday/src/models/database.rs similarity index 100% rename from src/models/database.rs rename to tegakituesday/src/models/database.rs diff --git a/src/models/mod.rs b/tegakituesday/src/models/mod.rs similarity index 100% rename from src/models/mod.rs rename to tegakituesday/src/models/mod.rs diff --git a/src/models/settings.rs b/tegakituesday/src/models/settings.rs similarity index 100% rename from src/models/settings.rs rename to tegakituesday/src/models/settings.rs diff --git a/src/models/submission/legacy_submission.rs b/tegakituesday/src/models/submission/legacy_submission.rs similarity index 100% rename from src/models/submission/legacy_submission.rs rename to tegakituesday/src/models/submission/legacy_submission.rs diff --git a/src/models/submission/mod.rs b/tegakituesday/src/models/submission/mod.rs similarity index 100% rename from src/models/submission/mod.rs rename to tegakituesday/src/models/submission/mod.rs diff --git a/src/models/submission/submission.rs b/tegakituesday/src/models/submission/submission.rs similarity index 100% rename from src/models/submission/submission.rs rename to tegakituesday/src/models/submission/submission.rs diff --git a/src/models/user/mod.rs b/tegakituesday/src/models/user/mod.rs similarity index 100% rename from src/models/user/mod.rs rename to tegakituesday/src/models/user/mod.rs diff --git a/src/models/user/serial.rs b/tegakituesday/src/models/user/serial.rs similarity index 100% rename from src/models/user/serial.rs rename to tegakituesday/src/models/user/serial.rs diff --git a/src/models/user/tests.rs b/tegakituesday/src/models/user/tests.rs similarity index 100% rename from src/models/user/tests.rs rename to tegakituesday/src/models/user/tests.rs diff --git a/src/prelude.rs b/tegakituesday/src/prelude.rs similarity index 100% rename from src/prelude.rs rename to tegakituesday/src/prelude.rs diff --git a/src/routes/get_challenge.rs b/tegakituesday/src/routes/get_challenge.rs similarity index 100% rename from src/routes/get_challenge.rs rename to tegakituesday/src/routes/get_challenge.rs diff --git a/src/routes/get_guilds.rs b/tegakituesday/src/routes/get_guilds.rs similarity index 100% rename from src/routes/get_guilds.rs rename to tegakituesday/src/routes/get_guilds.rs diff --git a/src/routes/get_user.rs b/tegakituesday/src/routes/get_user.rs similarity index 100% rename from src/routes/get_user.rs rename to tegakituesday/src/routes/get_user.rs diff --git a/src/routes/login.rs b/tegakituesday/src/routes/login.rs similarity index 100% rename from src/routes/login.rs rename to tegakituesday/src/routes/login.rs diff --git a/src/routes/logout.rs b/tegakituesday/src/routes/logout.rs similarity index 100% rename from src/routes/logout.rs rename to tegakituesday/src/routes/logout.rs diff --git a/src/routes/mod.rs b/tegakituesday/src/routes/mod.rs similarity index 100% rename from src/routes/mod.rs rename to tegakituesday/src/routes/mod.rs diff --git a/src/routes/post_login.rs b/tegakituesday/src/routes/post_login.rs similarity index 100% rename from src/routes/post_login.rs rename to tegakituesday/src/routes/post_login.rs diff --git a/src/routes/success.rs b/tegakituesday/src/routes/success.rs similarity index 100% rename from src/routes/success.rs rename to tegakituesday/src/routes/success.rs diff --git a/src/routes/testing.rs b/tegakituesday/src/routes/testing.rs similarity index 100% rename from src/routes/testing.rs rename to tegakituesday/src/routes/testing.rs diff --git a/src/utils/challenge.rs b/tegakituesday/src/utils/challenge.rs similarity index 100% rename from src/utils/challenge.rs rename to tegakituesday/src/utils/challenge.rs diff --git a/src/utils/furigana.rs b/tegakituesday/src/utils/furigana.rs similarity index 100% rename from src/utils/furigana.rs rename to tegakituesday/src/utils/furigana.rs diff --git a/src/utils/headers.rs b/tegakituesday/src/utils/headers.rs similarity index 100% rename from src/utils/headers.rs rename to tegakituesday/src/utils/headers.rs diff --git a/src/utils/kyujitai.rs b/tegakituesday/src/utils/kyujitai.rs similarity index 100% rename from src/utils/kyujitai.rs rename to tegakituesday/src/utils/kyujitai.rs diff --git a/src/utils/mod.rs b/tegakituesday/src/utils/mod.rs similarity index 100% rename from src/utils/mod.rs rename to tegakituesday/src/utils/mod.rs diff --git a/static/.gitignore b/tegakituesday/static/.gitignore similarity index 100% rename from static/.gitignore rename to tegakituesday/static/.gitignore diff --git a/static/android-chrome-192x192.png b/tegakituesday/static/android-chrome-192x192.png similarity index 100% rename from static/android-chrome-192x192.png rename to tegakituesday/static/android-chrome-192x192.png diff --git a/static/android-chrome-512x512.png b/tegakituesday/static/android-chrome-512x512.png similarity index 100% rename from static/android-chrome-512x512.png rename to tegakituesday/static/android-chrome-512x512.png diff --git a/static/apple-touch-icon.png b/tegakituesday/static/apple-touch-icon.png similarity index 100% rename from static/apple-touch-icon.png rename to tegakituesday/static/apple-touch-icon.png diff --git a/static/computer-fonts.png b/tegakituesday/static/computer-fonts.png similarity index 100% rename from static/computer-fonts.png rename to tegakituesday/static/computer-fonts.png diff --git a/static/default.png b/tegakituesday/static/default.png similarity index 100% rename from static/default.png rename to tegakituesday/static/default.png diff --git a/static/favicon-16x16.png b/tegakituesday/static/favicon-16x16.png similarity index 100% rename from static/favicon-16x16.png rename to tegakituesday/static/favicon-16x16.png diff --git a/static/favicon-32x32.png b/tegakituesday/static/favicon-32x32.png similarity index 100% rename from static/favicon-32x32.png rename to tegakituesday/static/favicon-32x32.png diff --git a/static/favicon.ico b/tegakituesday/static/favicon.ico similarity index 100% rename from static/favicon.ico rename to tegakituesday/static/favicon.ico diff --git a/static/fonts/K-Gothic/K-Gothic.eot b/tegakituesday/static/fonts/K-Gothic/K-Gothic.eot similarity index 100% rename from static/fonts/K-Gothic/K-Gothic.eot rename to tegakituesday/static/fonts/K-Gothic/K-Gothic.eot diff --git a/static/fonts/K-Gothic/K-Gothic.svg b/tegakituesday/static/fonts/K-Gothic/K-Gothic.svg similarity index 100% rename from static/fonts/K-Gothic/K-Gothic.svg rename to tegakituesday/static/fonts/K-Gothic/K-Gothic.svg diff --git a/static/fonts/K-Gothic/K-Gothic.ttf b/tegakituesday/static/fonts/K-Gothic/K-Gothic.ttf similarity index 100% rename from static/fonts/K-Gothic/K-Gothic.ttf rename to tegakituesday/static/fonts/K-Gothic/K-Gothic.ttf diff --git a/static/fonts/K-Gothic/K-Gothic.woff b/tegakituesday/static/fonts/K-Gothic/K-Gothic.woff similarity index 100% rename from static/fonts/K-Gothic/K-Gothic.woff rename to tegakituesday/static/fonts/K-Gothic/K-Gothic.woff diff --git a/static/fonts/K-Gothic/K-Gothic.woff2 b/tegakituesday/static/fonts/K-Gothic/K-Gothic.woff2 similarity index 100% rename from static/fonts/K-Gothic/K-Gothic.woff2 rename to tegakituesday/static/fonts/K-Gothic/K-Gothic.woff2 diff --git a/static/fonts/K-Gothic/demo.html b/tegakituesday/static/fonts/K-Gothic/demo.html similarity index 100% rename from static/fonts/K-Gothic/demo.html rename to tegakituesday/static/fonts/K-Gothic/demo.html diff --git a/static/fonts/K-Gothic/stylesheet.css b/tegakituesday/static/fonts/K-Gothic/stylesheet.css similarity index 100% rename from static/fonts/K-Gothic/stylesheet.css rename to tegakituesday/static/fonts/K-Gothic/stylesheet.css diff --git a/static/g.png b/tegakituesday/static/g.png similarity index 100% rename from static/g.png rename to tegakituesday/static/g.png diff --git a/static/grid.png b/tegakituesday/static/grid.png similarity index 100% rename from static/grid.png rename to tegakituesday/static/grid.png diff --git a/static/mascot-avatar.png b/tegakituesday/static/mascot-avatar.png similarity index 100% rename from static/mascot-avatar.png rename to tegakituesday/static/mascot-avatar.png diff --git a/static/mascot.png b/tegakituesday/static/mascot.png similarity index 100% rename from static/mascot.png rename to tegakituesday/static/mascot.png diff --git a/static/site.webmanifest b/tegakituesday/static/site.webmanifest similarity index 100% rename from static/site.webmanifest rename to tegakituesday/static/site.webmanifest diff --git a/static/tree.png b/tegakituesday/static/tree.png similarity index 100% rename from static/tree.png rename to tegakituesday/static/tree.png diff --git a/static/types-of-strokes.png b/tegakituesday/static/types-of-strokes.png similarity index 100% rename from static/types-of-strokes.png rename to tegakituesday/static/types-of-strokes.png diff --git a/styles/.gitignore b/tegakituesday/styles/.gitignore similarity index 100% rename from styles/.gitignore rename to tegakituesday/styles/.gitignore diff --git a/styles/sass/README.md b/tegakituesday/styles/sass/README.md similarity index 100% rename from styles/sass/README.md rename to tegakituesday/styles/sass/README.md diff --git a/styles/sass/_theme.sass b/tegakituesday/styles/sass/_theme.sass similarity index 100% rename from styles/sass/_theme.sass rename to tegakituesday/styles/sass/_theme.sass diff --git a/styles/sass/challenge.sass b/tegakituesday/styles/sass/challenge.sass similarity index 100% rename from styles/sass/challenge.sass rename to tegakituesday/styles/sass/challenge.sass diff --git a/styles/sass/general.sass b/tegakituesday/styles/sass/general.sass similarity index 100% rename from styles/sass/general.sass rename to tegakituesday/styles/sass/general.sass diff --git a/styles/sass/nav.sass b/tegakituesday/styles/sass/nav.sass similarity index 100% rename from styles/sass/nav.sass rename to tegakituesday/styles/sass/nav.sass diff --git a/styles/sass/servers.sass b/tegakituesday/styles/sass/servers.sass similarity index 100% rename from styles/sass/servers.sass rename to tegakituesday/styles/sass/servers.sass diff --git a/styles/sass/style.sass b/tegakituesday/styles/sass/style.sass similarity index 100% rename from styles/sass/style.sass rename to tegakituesday/styles/sass/style.sass diff --git a/styles/sass/submissions.sass b/tegakituesday/styles/sass/submissions.sass similarity index 100% rename from styles/sass/submissions.sass rename to tegakituesday/styles/sass/submissions.sass diff --git a/templates/base.html.tera b/tegakituesday/templates/base.html.tera similarity index 100% rename from templates/base.html.tera rename to tegakituesday/templates/base.html.tera diff --git a/templates/challenge.html.tera b/tegakituesday/templates/challenge.html.tera similarity index 100% rename from templates/challenge.html.tera rename to tegakituesday/templates/challenge.html.tera diff --git a/templates/copyright-years.html.tera b/tegakituesday/templates/copyright-years.html.tera similarity index 100% rename from templates/copyright-years.html.tera rename to tegakituesday/templates/copyright-years.html.tera diff --git a/templates/modal.html.tera b/tegakituesday/templates/modal.html.tera similarity index 100% rename from templates/modal.html.tera rename to tegakituesday/templates/modal.html.tera diff --git a/templates/nav.html.tera b/tegakituesday/templates/nav.html.tera similarity index 100% rename from templates/nav.html.tera rename to tegakituesday/templates/nav.html.tera diff --git a/templates/user.html.tera b/tegakituesday/templates/user.html.tera similarity index 100% rename from templates/user.html.tera rename to tegakituesday/templates/user.html.tera