A desktop application for managing academic internships.
Intern Manager is a desktop application designed to streamline the administration of internship programs. It manages student information, practice locations (such as hospitals and clinics), supervisors, and automates document generation and grade calculation based on weighted criteria.
The application is built using the Repository Pattern with Dependency Injection, which creates a decoupled, testable, and maintainable codebase.
- Intern Management: Full CRUD (Create, Read, Update, Delete) operations with data validation for student records.
- Venue Management: Manage internship locations and their supervisors.
- Meeting Scheduling: Track meetings and attendance.
- Evaluation System:
- Customizable, weighted grading criteria.
- Automatic calculation of averages and final status (Pass/Fail).
- A user-friendly interface for grade entry.
- Document Generation: Automatically create essential documents like contracts and attendance sheets.
- Batch Import: Process
.csvfiles to add or update multiple records at once using an "upsert" logic. - Data Persistence: Uses a local SQLite database for simplicity and portability.
To run this project, you will need the following software installed:
- Python 3.13+
- uv: A fast Python package installer and resolver.
- Installation instructions can be found at uv.astral.sh.
- Git
Follow the steps below to set up and run the application locally.
-
Clone the repository:
git clone https://github.com/mellorn/intern-manager.git cd intern-manager -
Create a virtual environment: This command will create a
.venvdirectory in the project folder.uv venv
-
Activate the virtual environment:
- On Windows (PowerShell):
.venv\Scripts\Activate.ps1
- On macOS/Linux:
source .venv/bin/activate
- On Windows (PowerShell):
-
Install dependencies: This command installs the project dependencies from the
uv.lockfile.uv sync
-
Run the application:
uv run python src/main.py
The project is organized into a modular structure to promote maintainability and scalability.
src/
├── core/
│ └── models/ # Domain entities (e.g., Intern, Venue, Grade)
├── data/
│ └── database.py # Database connector (SQLite)
├── repository/ # Data Access Layer
├── services/ # Service Layer (Business Logic)
├── ui/ # Presentation Layer (PySide6 / Qt)
│ ├── dialogs/ # Form dialogs (Add/Edit)
│ └── main_window.py # Main application window
├── utils/ # Utility modules (validators, etc.)
└── main.py # Application entry point and Dependency Injection setup
The architecture is composed of distinct layers:
core: Contains the fundamental data structures (models) of the application.data: Manages the database connection.repository: Mediates between the domain and data mapping layers using a collection-like interface for accessing domain objects.services: Contains the business logic of the application.ui: The graphical user interface, built with PySide6.
This project is licensed under the MIT License. See the LICENSE.md file for more details.
Rodrigo Mello mellornm@gmail.com