This project is a Django REST API for managing research studies, participants, and applications. It simulates a backend service that could be used in a research environment to register studies, collect participant applications, and manage approval workflows.
The project is built with Django, Django REST Framework, PostgreSQL, and Docker.
- Custom user model with roles (admin / researcher)
- Study management
- Participant management
- Application workflow
- Approve / reject actions
- Object-level permissions
- Filtering, search, ordering, pagination
- Seed demo data
- Docker setup with PostgreSQL
- Ready for Gunicorn + Nginx deployment
- Python 3
- Django
- Django REST Framework
- PostgreSQL
- Docker / Docker Compose
- django-filter
backend/ accounts/ studies/ participants/ applications/ core/ research_registry/
docker-compose.yml start.sh README.md
git clone cd research_registry
cp .env.example .env
Edit values if needed.
./start.sh
or manually
docker compose up --build
docker compose exec web python manage.py migrate
docker compose exec web python manage.py init_roles
docker compose exec web python manage.py seed_demo_data
docker compose exec web python manage.py createsuperuser
Base URL
Examples
GET /api/studies/ GET /api/studies/?search=memory GET /api/studies/?status=active GET /api/studies/?page=2
POST /api/applications/1/approve/ POST /api/applications/1/reject/
GET /api/me/
Browsable API
http://localhost:8000/api-auth/login/
Admin:
- full access
Researcher:
- access only own studies and applications
Anonymous:
- read-only
Run shell
docker compose exec web python manage.py shell
Run tests
docker compose exec web python manage.py test
- JWT authentication
- Export CSV
- File uploads
- Study tags
- Email notifications
- Logging
- Audit trail
- Production deployment with Gunicorn + Nginx
Example project for learning Python and Django.