BragStack is a SaaS-style career proof tracker that helps technical workers log wins, track skills, generate resume-ready bullets, and summarize weekly progress.
It is built with FastAPI, MongoDB, Docker, and Docker Compose, with Kubernetes support planned as the project grows.
Technical workers often solve meaningful problems every day but forget the details when it is time to update a resume, prepare for interviews, ask for a raise, or explain their impact.
BragStack helps users turn daily work into career evidence.
- Create brag entries
- List all brag entries
- View a single brag entry
- Update brag entries
- Delete brag entries
- Generate resume-style bullets
- Generate weekly progress reports
- Track categories and skill tags
- Run locally with Docker Compose
- Store data in MongoDB
- Python
- FastAPI
- MongoDB
- PyMongo
- Docker
- Docker Compose
- Swagger / OpenAPI
bragstack/
├── backend/
│ ├── app/
│ │ ├── main.py
│ │ ├── database.py
│ │ ├── models.py
│ │ └── routes.py
│ ├── Dockerfile
│ └── requirements.txt
├── docker-compose.yml
├── README.md
└── .gitignore
| Method | Endpoint | Description |
|---|---|---|
GET |
/ |
Health check |
POST |
/entries |
Create a brag entry |
GET |
/entries |
List all brag entries |
GET |
/entries/{entry_id} |
View one brag entry |
PUT |
/entries/{entry_id} |
Update a brag entry |
DELETE |
/entries/{entry_id} |
Delete a brag entry |
GET |
/entries/reports/weekly |
Generate a weekly progress report |
{
"title": "Debugged Docker Compose networking issue",
"category": "Docker",
"situation": "A service could not connect to MongoDB inside a Docker Compose environment.",
"action": "checked container logs, inspected the Compose network, and verified the MongoDB service hostname",
"impact": "identified that the app was using localhost instead of the Compose service name",
"lesson": "Inside Docker Compose, containers should use service names for DNS resolution.",
"tags": ["Docker", "Compose", "Networking", "MongoDB"]
}Resolved docker issue involving Docker, Compose, Networking, MongoDB by checked container logs, inspected the Compose network, and verified the MongoDB service hostname Result: identified that the app was using localhost instead of the Compose service name
Make sure Docker Desktop is running.
From the project root:
docker compose up --buildThen open the API docs:
http://localhost:8000/docs
docker compose downTo remove MongoDB data too:
docker compose down -vThe backend uses the following environment variable:
| Variable | Description | Default |
|---|---|---|
MONGO_URL |
MongoDB connection string | mongodb://localhost:27017 |
In Docker Compose, this is set to:
mongodb://mongo:27017
This project demonstrates:
- Building a FastAPI backend
- Connecting FastAPI to MongoDB
- Creating REST API endpoints
- Using Dockerfiles to containerize an application
- Running a multi-container environment with Docker Compose
- Connecting services through Docker Compose networking
- Persisting MongoDB data with Docker volumes
- Testing API behavior through Swagger/OpenAPI
- Using timezone-aware UTC datetime values
- Structuring a backend project for future SaaS growth
Planned features:
- React or Next.js frontend
- User authentication
- Skill/tag summary dashboard
- Monthly reports
- STAR interview story generator
- AI-assisted resume bullet generation
- Export entries to Markdown or PDF
- Kubernetes manifests
- GitHub Actions CI workflow
- Deployment to a cloud environment
BragStack will eventually include Kubernetes manifests for:
- Backend Deployment
- Backend Service
- MongoDB Deployment
- MongoDB Service
- ConfigMap
- Secret
- Ingress
- Health checks
Built by Tee as a portfolio SaaS project to showcase backend development, Docker, MongoDB, and future Kubernetes/DevOps skills.