Mini Jira is a project management tool built using Django and Django Rest Framework (DRF). It aims to provide task and project management features with collaboration capabilities such as task discussions, comments, and real-time updates.
Ensure you have the following installed:
- Python 3.8 or above
- pip (Python package installer)
- Virtual environment tool (optional but recommended)
git clone https://github.com/your_username/mini-jira.git
cd mini-jira
python3 -m venv venv source venv/bin/activate
python -m venv venv venv\Scripts\activate
pip install -r requirements.txt
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver
mini_jira/ βββ apps/ # All Django apps are in this folder β βββ accounts/ # User authentication and registration β βββ collaborations/ # Project invitations and collaboration management β βββ tasks/ # Task management, including comments and discussions β βββ projects/ # Project-related data models and views β βββ registration/ # User registration APIs βββ mini_jira/ # Core project settings, including ASGI, WSGI, and constants βββ manage.py # Django management command utility βββ requirements.txt # List of dependencies βββ pytest.ini # Pytest configuration for test discovery βββ db.sqlite3 # Database file (use PostgreSQL for production)
- Django Apps: The project is divided into individual apps for specific modules like tasks, projects, collaborations, etc. This promotes modularity and easier maintainability.
- Real-Time Features: WebSockets and Django Channels are used to implement real-time task updates, discussions, and comments.
- Permissions: Custom permissions like ProjectCollaboratorPermission and TaskCollaboratorPermission are used to control access to various endpoints based on user roles and project membership.
- UUIDs: UUIDs are used as primary keys for various models (e.g., Task, Project) to provide better security and avoid ID collisions, especially in larger systems.
- Task Management: Tasks can have comments, discussions, and multiple states, and these features are tightly integrated into the workflow to allow for smooth collaboration between users.
- Signal Integration: Django signals are used for event-based tasks like sending notifications when a comment is added or when a task is updated.
- WebSockets: WebSockets (via Django Channels) are used for real-time task and comment updates. The application listens to - WebSocket channels and notifies users of updates to tasks, comments, and discussions.
pip install pytest pytest pytest apps/tasks/tests.py