Skip to content

SantiagoMO3/project-SysAcad

 
 

Repository files navigation

Academic Management System

A web-based platform to manage academic operations for universities and colleges. It supports multiple roles (administrator, professor, student), academic structure (faculties, careers, subjects), enrollments, grading, and certificate generation.

Features

  • User authentication and roles (administrator, professor, student)
  • Admin dashboard: CRUD for users, faculties, careers, subjects, final exams
  • Assign professors to subjects and finals
  • Student dashboard: subject and final exam inscriptions, grade tracking
  • Professor dashboard: manage grades and view final inscriptions
  • Regular student certificate generation (DOCX via docxtpl)
  • Role-based access control

Tech Stack

  • Backend: Python 3, Django
  • Frontend: Django Templates, HTML5, CSS
  • Database: PostgreSQL by default (configurable via environment variables)
  • Containerization: Docker + docker-compose
  • Documents: docxtpl for generating certificates

Project Structure

academics/         # Academic models, forms, admin, tests
accounts/          # Auth views, login form, URLs
inscriptions/      # Subject and final exam enrollment models/admin
main/              # Django project settings, URLs, ASGI/WSGI
users/             # CustomUser, profiles, views, admin, templates
static/            # CSS, JS
templates/         # Base templates
docs/              # Diagrams and documentation assets
manage.py
requirements.txt
docker-compose.yml
Dockerfile

Getting Started

Prerequisites

  • Python 3.10+
  • pip
  • Docker (optional)

Environment Variables

The app reads configuration from a .env file (loaded in main/settings.py).

Minimal variables:

SECRET_KEY=dev-secret
DEBUG=1
ALLOWED_HOSTS=localhost,127.0.0.1

# PostgreSQL settings (required)
POSTGRES_DB=sysacad_database
POSTGRES_USER=admin
POSTGRES_PASSWORD=admin
# Use `db` when running with docker-compose, or `localhost` if Postgres runs locally
DATABASE_HOST=db
DATABASE_PORT=5432

Local Setup

  1. Create and activate a virtual environment
python3 -m venv .venv
source .venv/bin/activate
  1. Install dependencies
pip install -r requirements.txt
  1. Configure environment variables (dotenv is read in main/settings.py)

Create a .env in the project root:

  1. Apply migrations
python manage.py makemigrations academics inscriptions users
python manage.py migrate
  1. Create an admin user (Django superuser)
python manage.py createsuperuser
  1. Run the development server
python manage.py runserver
  1. Access the app at http://localhost:8000/

Docker Setup (optional)

Build and start services:

docker compose up --build

Stop services:

docker compose down

Notes:

  • Ensure .env includes database credentials and set DATABASE_HOST=db for docker-compose.
  • The backend service binds the project folder as a volume for development.

Core Workflows

  • Admin:

    • Manage users and their profiles (student, professor, administrator)
    • Maintain faculties, careers, subjects
    • Create and manage final exams
    • Assign professors to subjects and finals
  • Student:

    • Enroll in subjects and final exams
    • See grades and eligibility for finals
    • Download regular student certificate (template: regular_certificate.docx at repo root)
  • Professor:

    • View assigned subjects and finals
    • Enter and update student grades
    • View inscriptions for assigned final exams

Routes

  • Home: /
  • Login: /login/
  • Logout: /logout/
  • Django Admin: /django-admin/

Users app (role dashboards and admin UI):

  • Admin dashboard: /admin/dashboard/
  • Users CRUD: /admin/users/
  • Faculties: /admin/faculties/
  • Careers: /admin/careers/
  • Subjects: /admin/subjects/
  • Finals: /admin/finals/
  • Student dashboard: /student/dashboard/
  • Student regular certificate: /student/certificate/regular/
  • Professor dashboard: /professor/dashboard/

Configuration Notes

  • Environment variables are loaded via .env (see main/settings.py)
  • Default database is PostgreSQL (see DATABASES in main/settings.py). For local Postgres, set DATABASE_HOST=localhost; for docker-compose, set DATABASE_HOST=db.
  • The regular certificate uses docxtpl and the regular_certificate.docx template. Adjust placeholders in the template to match context variables in users.views.download_regular_certificate.

Testing

Run the test suite:

python manage.py test

Documentation

  • Code is documented with Google-style docstrings across apps.
  • Optionally, you can add Sphinx to generate HTML documentation from docstrings.

License

GPLv3. See the LICENSE file for details.

Development team

  • Valentin Rubio

  • Pablo Geyer

  • Luciano Castro

  • Santiago Calzolari

  • Santiago Oses

  • ChatGPT (OpenAI)

  • Gemini (Google, antes Bard)

  • Copilot (GitHub/Microsoft)

  • Claude (Anthropic)

  • Alexa (Amazon)

  • Siri (Apple)

  • Cortana (Microsoft)

  • Replika

  • Perplexity AI

  • YouChat (You.com)

  • Pi (Inflection AI)

  • Jasper Chat

  • HuggingChat (Hugging Face)

  • My AI (Snapchat)

  • Chatsonic (Writesonic)

About

Parcial N°1 - Desarrollo de Software

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 80.2%
  • HTML 19.1%
  • Other 0.7%