crablog 2: electric boogaloo
Find a file
2025-05-04 04:34:58 +02:00
content init ƸӜƷ 2025-05-04 04:02:09 +02:00
src init ƸӜƷ 2025-05-04 04:02:09 +02:00
.gitignore init ƸӜƷ 2025-05-04 04:02:09 +02:00
Cargo.lock init ƸӜƷ 2025-05-04 04:02:09 +02:00
Cargo.toml init ƸӜƷ 2025-05-04 04:02:09 +02:00
README.md fail2ban 2025-05-04 04:34:58 +02:00

Litelog

Philosophy

With the first iteration of this project, I've learned a lot and realized, it would take a lot of work to get to where I want to be. Instead, I want to rebuild it with an elegant architecture, feature-testing-first philosophy and some leaner frameworks.

Features included

  • Aiming for 80% test coverage
  • Server-side rendered posts using fast templating engine
  • Single user session management using CSRF tokens
  • Admin panel for post CRUD unlocked via submit token
  • Fail2Ban for submit token submission request
  • Input sanitization
  • Post-title based URLs instead of using count-up IDs
  • Static file hosting
  • Configuration via environment variables
  • Container support
  • Request logging
  • Minimal CSS for accessibility
  • Run profiles for development (mocking) and production

Features deliberately omitted

  • External stylesheets and fonts
  • Multi User / RBAC System
  • Any JavaScript

Development

  1. Clone this repository
  2. Install diesel and create a database
cd ./site
#cargo install diesel_cli --no-default-features --features "sqlite"
#diesel setup --database-url content/test-db.sqlite3
#diesel migration run --database-url content/test-db.sqlite3
cargo test
  1. Set up your configuration .env (see below)

Configuration environment file

All configuration options are defined in .env which should be placed in the path where crablog is run. An example configuration is provided:

.env

CL_USERNAME=yourusername # required
CL_EMAIL=me@mydomain.tld # optional
CL_BIND_PORT=8000 # optional
CL_SUBMIT_TOKEN=Submit!123 # required
CL_GITHUB_ACCOUNT=yourusername # optional
CL_TWITTER_ACCOUNT=yourusername # optional
CL_MASTODON_ACCOUNT=yourusername@mastodon.social # optional
CL_REDDIT_ACCOUNT=yourusername # optional
CL_DISCORD_ACCOUNT=yourusername # optional

# only needed when not using a docker container
CL_ROOT_PATH=/path/to/template/and/sqliteDB/directory

Regenerate Migrations from Schema:

diesel migration generate --diff-schema=./src/db/schema.rs create_posts