Skip to content

berkeley-cdss/ddmatch

Repository files navigation

DDMatch

DDMatch is a full-stack project-matching application for students, project partners, and administrators. It supports the end-to-end workflow for managing users, publishing projects, collecting applications, extending offers, and operating each application season.

Tech Stack

  • Python / Django 4
  • Django REST Framework
  • PostgreSQL
  • JWT authentication with Djoser
  • AWS S3 + CloudFront for file storage
  • AWS SES for transactional email
  • Docker + Gunicorn for application serving
  • Swagger / OpenAPI documentation

Core Capabilities

  • Student, partner, and administrator account management
  • JWT login, password reset, OTP verification, and profile image upload
  • Project partner onboarding, review, and approval
  • Application season management
  • Public project listings and project detail views
  • Student project applications
  • Partner offer workflows and student offer responses
  • Dashboards, activity logs, and administrative tooling
  • File uploads for resumes, partner logos, and related assets

Getting Started

Prerequisites

  • Python 3
  • PostgreSQL
  • Git
  • A configured .env file

Run Locally

git clone <repo-url>
cd DDMatch
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver

Once the app is running, API documentation is available at the root route:

http://127.0.0.1:8000/

Environment Variables

Create a local .env file and keep it out of source control. The application expects configuration for:

  • Django settings: DJANGO_SECRET, ENVIRONMENT, ALLOWED_HOSTS, TRUSTED_ORIGINS
  • Server settings: PORT, CONTAINER
  • PostgreSQL database connection values
  • AWS S3 and CloudFront storage values
  • AWS SES email values
  • Optional third-party integrations such as Google OAuth and Cloudinary

API Overview

Key application routes include:

  • /v2/auth/ — authentication and account flows
  • /v2/students/ — student profiles
  • /v2/partners/ — project partner records
  • /v2/project/ — project management
  • /v2/application/ — student applications
  • /v2/projects/offers/ — offer workflows
  • /v2/dashboards/ — dashboard data
  • /v2/public/projects/ — public project browsing
  • /v2/health/ — health check

Production Architecture

Internet
   ¦
   ?
Nginx (SSL termination)
   ¦
   ?
Dockerized Django app (Gunicorn)
   ¦
   +-- AWS RDS PostgreSQL
   +-- AWS S3 + CloudFront
   +-- AWS SES

Deployment

DDMatch is designed for deployment on AWS with:

  • AWS RDS (PostgreSQL) for relational data storage
  • AWS S3 + CloudFront for file and media storage
  • AWS SES for transactional email delivery
  • AWS EC2 for application hosting
  • Docker + Gunicorn for serving the Django application
  • Nginx + Let's Encrypt for reverse proxying and SSL termination
  • GitHub Actions for CI/CD deployment
  • Sentry for production monitoring

For the full production setup, infrastructure configuration, and post-deployment checklist, read deployment.md.

Contributing

Contributions are welcome. When making changes:

  1. Create a focused branch
  2. Keep secrets out of commits
  3. Run migrations and relevant tests before opening a pull request
  4. Document any setup or deployment changes that affect other contributors

Author

George Obaido

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages