Skip to content

Django-Rwanda/django-rwanda-portal

Django Rwanda Portal

Overview

Django Rwanda Portal is an open-source project designed to foster collaboration and knowledge sharing within the Django community in Rwanda. It provides a modular and scalable system built with Django, structured into reusable applications and layers for clean architecture, maintainability, and community-driven contributions.

The system emphasizes:

  • Layered architecture for separation of concerns.

  • Reusability & DRY principles.

  • Community collaboration through well-documented code and contribution guidelines.


Purpose

  • Serve as a reference architecture for Django projects in Rwanda.

  • Provide contributors a structured and organized system to learn from and extend.

  • Implement real-world features like user management, posts, notifications, messaging, events, and media handling.

  • Encourage collaboration, testing, and maintainability within the Django community.


Project Structure

The project is organized into the following primary layers:

Layer / Directory Purpose
src/api API layer exposing versioned REST endpoints (v1/). Handles routing and schema definitions.
src/apps/* Domain-specific applications (users, posts, analytics, messaging, notifications, media, comments, tags, events). Each app includes its own models, serializers, views, services, tests, etc.
src/common Shared templates, static files, and reusable email templates.
src/config Django project configuration (settings for dev, prod, staging, test), URL routing, WSGI/ASGI entry points, and Celery integration.
src/core Core infrastructure utilities: database mixins, middleware, security helpers, constants, and exceptions.
docker/ Docker setup with Dockerfile, docker-compose.yml, and Nginx configuration.
infra/ Infrastructure-related configuration (future use for deployments).
scripts/ Automation scripts for project setup and maintenance.
docs/ Documentation for apps, layers, and developer guides.

Getting Started

Prerequisites

Before contributing or running the project, ensure you have knowledge of or access to:

  • Programming Languages: Python, JavaScript (vanilla)

  • Frameworks & Libraries: Django, jQuery

  • Databases & Caching: PostgreSQL, Redis

  • Containerization & Deployment: Docker, docker-compose (Kubernetes or cloud providers like AWS/GCP/Azure optional)

  • Python Dependencies: Defined in pyproject.toml and requirements.txt

  • Package Managers: pip or uv


Installation

Clone the repository:

git clone https://github.com/django-rwanda/django-rwanda-portal.git
cd django-rwanda-portal

Install dependencies:

# using uv
uv sync

# or using pip
pip install -r requirements.txt

Configure environment variables:

cp env/.env.example env/.env

Run migrations:

python src/manage.py makemigrations
python src/manage.py migrate

Start the development server:

python src/manage.py runserver

Using Docker (Optional)

To run the project with Docker:

docker-compose up --build

This sets up Django, PostgreSQL, and Nginx services.


Contribution Guidelines

Before contributing, review:

Key practices:

  • Work on feature branches, submit pull requests.

  • Write tests for new features and bug fixes.

  • Follow project coding standards (PEP8, type hints).

  • Update documentation when introducing new modules or features.


Documentation


License

This project is licensed under the MIT License

Copyright (c) 2025 I. Fils

About

Django Community System is an open-source platform for Django developers, offering user management, content sharing, messaging, notifications, and collaboration tools. Modular and scalable, it enables learning, contributing, and building projects while fostering community engagement.

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors