Skip to content

Riadnov-dev/kittygram_final

Repository files navigation

🐾 Kittygram

A full-stack web application for sharing cat profiles and photos — built with Django REST API, React frontend, PostgreSQL, Docker, Nginx, and CI/CD.


📌 About the Project

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.


🧰 Tech Stack


✨ Features

  • 🟢 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

🚀 Quick Start (Docker)

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

🛠 Manual Backend Launch (without Docker)

cd backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver

🔐 Environment Variables (.env example)

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

📚 API Endpoints

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)

🧪 Running Tests

cd backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pytest

🐳 CI/CD & Deployment

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

📂 Project Structure

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

👤 Author

Nikita Riadnov

GitHub: Riadnov-dev

About

Web app for sharing cat profiles and photos — Django backend, React frontend, PostgreSQL, Docker, and CI/CD.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors