A full-stack web application for sharing cat profiles and photos — built with Django REST API, React frontend, PostgreSQL, Docker, Nginx, and CI/CD.
Kittygram Final is a pet-sharing platform where users can:
- Register and authenticate
- Create, update, and view cat profiles
- Upload photos
- Assign achievements to their cats
The project combines a powerful Django REST backend with a modern React-based SPA frontend, deployed with Docker and fully automated via CI/CD.
- 🟢 Django backend with full-featured REST API (DRF)
- 🎨 React SPA frontend with a modern user interface
- 🗄️ PostgreSQL database for reliable data storage
- 🛡️ User authentication & permissions
- 📷 Image upload and file storage
- 🏅 Achievements system for cats
- 🔀 Nginx reverse proxy for serving the app
- 🐳 Dockerized multi-service deployment
- 🔁 Automated CI/CD workflow via GitHub Actions
Clone the repository:
git clone https://github.com/Riadnov-dev/kittygram_final.git
Configure environment: Copy .env.example to .env and set all required variables (see below)
Build and launch:
docker-compose up -d --build
Frontend will be available at:
http://localhost:9000
API base URL:
http://localhost/api/
Stop all containers:
docker-compose down
cd backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver
POSTGRES_DB=kittygram
POSTGRES_USER=kittygram_user
POSTGRES_PASSWORD=kittygram_pass
DB_HOST=db
DB_PORT=5432
DJANGO_SECRET_KEY=your_secret_key
DJANGO_ALLOWED_HOSTS=localhost,127.0.0.1
GET /api/cats/ — List all cats
POST /api/cats/ — Create a new cat profile
GET /api/cats/{id}/ — View cat details
PATCH /api/cats/{id}/ — Update cat profile
DELETE /api/cats/{id}/ — Delete a cat
GET /api/achievements/ — List achievements
POST /api/achievements/ — Create achievement
POST /api/token/ — Obtain JWT
POST /api/token/refresh/ — Refresh JWT
(see /api/ schema or [backend/README.md] for full API docs)
cd backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pytest
Every push to main triggers GitHub Actions workflow:
Runs backend and frontend tests
Builds Docker images for backend, frontend, nginx
Pushes images to Docker Hub (if configured)
Deploys containers to the remote server (if configured)
Collects static files and runs DB migrations
Sends Telegram notifications (if set up)
See workflow config: .github/workflows/main.yml
kittygram_final/
├── backend/
│ ├── cats/ — Django app (models, views, serializers, etc.)
│ ├── kittygram_backend/ — Django settings, URLs
│ ├── Dockerfile, requirements.txt, manage.py
├── frontend/
│ ├── public/, src/ — React SPA
│ ├── Dockerfile, package.json
├── nginx/
│ ├── Dockerfile, nginx.conf
├── tests/
│ ├── backend and frontend tests
├── docker-compose.yml, docker-compose.production.yml
├── .github/workflows/ — GitHub Actions CI/CD
├── pytest.ini, setup.cfg
└── .env.example, README.md
Nikita Riadnov
GitHub: Riadnov-dev