https://github.com/rayato159/quests-tracker
Hey adventurers! Welcome to Crabby's Quests Tracker, the ultimate tool to keep tabs on all your epic adventures. ๐
https://github.com/rayato159/quests-tracker
axum-demo clean-architecture clean-code crud-api diesel domain-driven-design postgresql practice-project restful-api rust
Last synced: 2 months ago
JSON representation
Hey adventurers! Welcome to Crabby's Quests Tracker, the ultimate tool to keep tabs on all your epic adventures. ๐
- Host: GitHub
- URL: https://github.com/rayato159/quests-tracker
- Owner: Rayato159
- License: mit
- Created: 2024-11-07T19:50:35.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-06-11T16:36:21.000Z (4 months ago)
- Last Synced: 2025-07-03T15:46:53.414Z (3 months ago)
- Topics: axum-demo, clean-architecture, clean-code, crud-api, diesel, domain-driven-design, postgresql, practice-project, restful-api, rust
- Language: Rust
- Homepage:
- Size: 184 KB
- Stars: 16
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Quests Tracker: Crabby's Final Project ๐
Hey adventurers! Welcome to **Crabby's Quests Tracker**, the ultimate tool to keep tabs on all your epic adventures. ๐ Whether you're rallying your squad, tracking loot, or planning your next epic quest.
this projectโs got your back. Let's make managing quests as legendary as Crabby's journey itself! ๐ฆ๐ฅ
## ๐ What is Quests Tracker?
This is a project to help you stay organized with quests, adventurers, and their outcomes! Track whoโs in, whoโs out, and what went down, all while keeping things clean with **Rust** and **Domain-Driven Design** (DDD). Itโs not just another tracker, it's Crabby's way to squad up and roll out! โ๏ธโจ
### ๐ Key Features
- **QuestOps**: Manage all the quest operations. โ๏ธ
- **Quest Viewing**: Easily view all active quests, their details, and progress. ๐โจ
- **Journey Ledger**: Keep a log of every quest journey, completed, failed, or in progress. ๐๐ซ
- **Crew Switchboard**: Let's adventures to join or leave a quest. ๐ ๏ธ๐ฅ
- **Adventures**: Just an adventure. ๐
- **Guild Commanders**: Assign guild commanders to do the quest ops duty. ๐ฐ๐ฆธโโ๏ธ
- **Authentication**: Keep everything secure, only the right adventurers can join the quests. ๐โจ## ๐ ๏ธ Tech Stack
- **Rust Tokio Axum** ๐ฆ: For maximum safety and async vibes.
- **PostgreSQL** ๐: To store all that legendary loot and quest data.
- **Diesel ORM** ๐: For smooth database ops.## ๐ Project Structure
Organized with **Domain-Driven Design** + **Clean Architecture** to keep things tidy:
```text
quests_tracker/
โโโโconfig/
โโโโsrc/
โ โโโโapplication/
โ โ โโโโusecases/
โ โโโโdomain/
โ โ โโโโentities/
โ โ โโโโrepositories/
โ โ โโโโvalue_objects/
โ โโโโinfrastructure
โ โโโโaxum_http/
โ โโโโpostgres/
โ โโโโmigrations/
โ โโโโrepositories/
โโโ Cargo.toml
```## ๐ง How to Set Up
Ready to level up? Follow these steps:
1. **Clone the Repo**:
```sh
git clone https://github.com/Rayato159/quests-tracker.git
cd quests-tracker
```2. **Set Up Diesel**:
```sh
cargo install diesel_cli --no-default-features --features postgres
```3. **Set Up PostgreSQL on Podman**:
```sh
podman run --name quests-tracker-db -e POSTGRES_PASSWORD=123456 -e POSTGRES_DB=quests_tracker_db -p 5432:5432 -d postgres:latest
```4. **Run Migrations**:
```sh
diesel migration run
```5. **Run the Server**:
```sh
cargo run
```Boom, you're in! ๐
## ๐งช Testing
1. **Run Tests**:
```sh
cargo test
```2. **Runing Test Coverage**:
```sh
cargo install cargo-tarpaulin
``````sh
cargo tarpaulin --out xml
```## ๐ฆ Upgrade All Dependecies
```sh
cargo update
```## ๐ค Let's Cargo Clippy Refactor Your Code in Automatically
```sh
cargo clippy --fix --lib -p quests_tracker
```## ๐ ENV Example
```text
STAGE=LocalSERVER_PORT=8080
SERVER_BODY_LIMIT=10 # MB
SERVER_TIMEOUT=90 # secondsDATABASE_URL=postgres://postgres:123456@localhost/quests_tracker_db
JWT_ADVENTURER_SECRET=a_supersecret
JWT_ADVENTURER_REFRESH_SECRET=ar_supersecretrefresh
JWT_GUILD_COMMANDER_SECRET=g_supersecret
JWT_GUILD_COMMANDER_REFRESH_SECRET = gr_supersecretrefresh
```## ๐ณ Build
1. **Build Docker Image**:
```sh
docker build -t quests-tracker:v1.0.0 -f ./Dockerfile .
```2. **Run Docker Container**:
```sh
podman run --name quests-tracker -p 8080:8080 \
-e STAGE=Local \
-e SERVER_PORT=8080 \
-e SERVER_BODY_LIMIT=10 \
-e SERVER_TIMEOUT=90 \
-e DATABASE_URL=postgres://user:password@host:port/database_name \
-e JWT_ADVENTURER_SECRET=xxxxx \
-e JWT_ADVENTURER_REFRESH_SECRET=xxxxx \
-e JWT_GUILD_COMMANDER_SECRET=xxxxx \
-e JWT_GUILD_COMMANDER_REFRESH_SECRET=xxxxx \
-d quests-tracker:v1.0.0
```## โก๏ธ Usage
- **Do a Quest Ops**: Start a new adventure for your crew.
- **Add Adventurers**: Let your squad join in on the action.
- **Track Progress**: Update and check the status of quests, know whoโs thriving and whoโs not.## ๐ Contributing
Feel like adding your magic to Crabby's adventure? Fork the repo, make those changes, and open a pull request. Crabby loves help from fellow adventurers! ๐ชโจ
## ๐ License
This project is open-sourced under the **MIT License**. feel free to use, modify, and share.
## ๐ฆ Shoutout to Crabby!
Special shoutout to **Crabby**, the ultimate adventure guide. Without Crabby, none of these epic quests would be possible. Keep on adventuring! ๐ฆ๐
**Happy Questing, Adventurers!** ๐