crablog/README.md
2024-08-18 01:17:27 +02:00

66 lines
2.3 KiB
Markdown

# Crablog
Pure rust. Built with actix, diesel, tera, serde and sqlite3.
## Run instructions using docker
1. Clone this repository
2. Install diesel and create a database
```bash
cd ./site
cargo install diesel_cli --no-default-features --features "sqlite"
diesel setup --database-url ../content/db.sqlite3
diesel migration run --database-url ../content/db.sqlite3
```
3. Set up your configuration .env (see below)
4. Pull the image (or build from source) and run the docker container
```bash
docker-compose up -d
```
## 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
CL_EMAIL=me@mydomain.tld # optional
CL_BIND_PORT=8000 # optional
CL_SUBMIT_TOKEN=Submit!123 # required, token needed for submitting
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/directory/and/sqliteDB
```
## Routes
| Route | Description |
| ------------ | -------------------------------------------------- |
| `/` | shows the last 5 posts |
| `/id/<id>` | shows a single post by id |
| `/all` | shows all posts |
| `/submit` | create posts using a web form |
| `/edit>` | post selection page for editing |
| `/edit/<id>` | edit, delete or hide posts |
| `/about` | information about this blog, social media accounts |
**API Routes**
| Method | Route | Description |
|---- | ---------------- | ------------------------- |
| GET | `/api/blog/posts` | returns all posts as json |
| POST | `/api/blog/create` | creates a post |
| POST | `/api/blog/posts/edit/{post_id}` | edits a post |
| POST | `/api/blog/posts/hide/{post_id}` | hides a post |
| POST | `/api/blog/posts/delete/{post_id}` | deletes a post |
## Regenerate Migrations from Schema:
`diesel migration generate --diff-schema=./src/db/schema.rs create_posts`