Skip to content

Shipovmax/DevMatch

Repository files navigation

DevMatch

A Django web application for finding teammates on pet projects.
Post your project, describe the required skills, and connect with developers who want to join.


Features

  • Custom user model — email-based authentication, auto-generated avatar from initials on signup
  • User profiles — public profile pages, avatar upload, GitHub link, about section
  • Projects — create, edit, and close projects; each project has a name, description, GitHub URL, and status
  • Skill system — add skills to a project with AJAX autocomplete; filter the project list by skill
  • Participation — join or leave open projects; project owner can close the project when done
  • Favourites — bookmark any project from the list or detail page
  • Participants directory — paginated list of all registered users
  • Admin panel — full Django admin with registered models
  • Demo dataseed_demo_data management command populates the DB on first run
  • Dockerised — single docker compose up --build gets the full stack running

Tech Stack

Layer Technology
Language Python 3.12
Framework Django 4.2
Database PostgreSQL 16 (SQLite for tests)
Image processing Pillow
Config python-decouple
Infrastructure Docker Compose

Quick Start (Docker)

cp .env_example .env
docker compose up --build

The app will be available at http://localhost:8000.

On first run the entrypoint automatically runs migrations, collects static files, and seeds demo data.

To stop:

docker compose down

PostgreSQL data, media files, and static files are stored in named volumes (postgres_data, media_data, static_data) and persist across restarts.


Demo Accounts

Email Password
maria@yandex.ru password
alex@example.com password
olga@example.com password

Superuser Access

Add to .env before starting (or restart the web container after adding):

DJANGO_SUPERUSER_EMAIL=admin@example.com
DJANGO_SUPERUSER_PASSWORD=AdminPass123
DJANGO_SUPERUSER_NAME=Admin
DJANGO_SUPERUSER_SURNAME=User

Admin panel: http://localhost:8000/admin/


Local Setup (without Docker)

python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
cp .env_example .env          # fill in DB credentials
python manage.py migrate
python manage.py seed_demo_data
python manage.py runserver

Tests use SQLite automatically — no Postgres needed for manage.py test.


Running Tests

python manage.py check
python manage.py test

Project Structure

devmatch/
├── manage.py
├── requirements.txt
├── Dockerfile
├── docker-compose.yml
├── team_finder/           # Django project config (settings, urls, services)
├── projects/              # Projects app — models, views, forms, AJAX endpoints
├── users/                 # Users app — custom User model, auth views, profiles
├── templates/             # HTML templates
└── static/                # CSS, JS, fonts, images

Key Design Decisions

  • Atomic skill management — skills are created on-the-fly via AJAX if they don't exist yet; duplicate-safe with iexact lookup before create
  • Single toggle pattern — join/leave and favourite/unfavourite are handled by a single POST endpoint each, returning JSON state
  • Auto-avatar generation — on user creation, Pillow draws a coloured initial avatar derived deterministically from the user's email hash
  • Test DB isolationRUNNING_TESTS flag in settings switches to SQLite, so CI needs no Postgres service

Author

About

Web app for finding teammates on pet projects — skill-based matching, AJAX autocomplete, favourites. Django + PostgreSQL + Docker.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors