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.
- 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 data —
seed_demo_datamanagement command populates the DB on first run - Dockerised — single
docker compose up --buildgets the full stack running
| 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 |
cp .env_example .env
docker compose up --buildThe 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 downPostgreSQL data, media files, and static files are stored in named volumes (postgres_data, media_data, static_data) and persist across restarts.
| Password | |
|---|---|
maria@yandex.ru |
password |
alex@example.com |
password |
olga@example.com |
password |
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=UserAdmin panel: http://localhost:8000/admin/
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 runserverTests use SQLite automatically — no Postgres needed for
manage.py test.
python manage.py check
python manage.py testdevmatch/
├── 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
- Atomic skill management — skills are created on-the-fly via AJAX if they don't exist yet; duplicate-safe with
iexactlookup beforecreate - 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 isolation —
RUNNING_TESTSflag in settings switches to SQLite, so CI needs no Postgres service
- GitHub: Shipovmax
- Email: shipov.max@icloud.com