Skip to content

sila-ozgel/System-Programming-Term-Project

Repository files navigation

Student Information System - Dockerized

C++ Docker PostgreSQL Build License

Project Overview

The Student Information System (SIS) is a high-performance, distributed management platform developed for the System Programming course. This final v3.0 release represents a fully synchronized, containerized ecosystem where the C++ backend, PostgreSQL database, and environment configurations are seamlessly integrated.

The architecture utilizes a dual-service bridge:

  1. Application Container (sis-app): A C++17 CLI engine managing business logic and secure transactions.
  2. Database Container (sis-db): A PostgreSQL 15 instance optimized for persistent data storage and rapid schema initialization.

Team Members & Roles

This project is developed by a team of 3 students for the System Programming course.

Role Student Name Responsibility GitHub Profile Docker-Hub Profile
Project Manager SILA ÖZGEL Repo Management, Docs, Coordination [silaozgel] [silaozgel1]
Docker Engineer GÖKTUĞ KARACA Docker Infrastructure, CI/CD [krcgoktug] [goktugkaraca]
C++ Developer MİRAY PINARBAŞI App Development, Database Logic [MirayPinarbasi] [miraypinarbasi]

Core Features

  • Full CRUD Lifecycle: Interactive management of student records (Create, Read, Update, Delete).

  • Environment Decoupling: Secure credential management via .env (No hardcoded passwords in production).

  • Healthcheck Orchestration: Integrated depends_on logic ensuring sis-app waits for sis-db to be "Healthy".

  • Data Integrity: Multi-layered validation using std::regex and PostgreSQL unique constraints.

  • Resource Management: Strict adherence to RAII for exception-safe database connections and transactions.

  • Persistent Storage: Named Docker Volumes ensure student records persist across container rebuilds.

Technology Stack

  • Operating System: Ubuntu Linux
  • Language: C++ (Standard 11/17)
  • Database: PostgreSQL (via libpqxx library)
  • Orchestration: Docker Compose v3.8 (Production Image Tag: v3.0)
  • Version Control: Git & GitHub (Git Flow Strategy)
  • CI/CD: Automated build and push pipeline using GitHub Actions.
  • Build System: Migrated to CMake for stable dependency management.
  • Optimization: Removed git and unnecessary packages from production images to reduce size.
  • Testing: Unit Testing (Negative Connection Tests) and Integration Testing (Full CRUD Workflow).

Quality Assurance & Final Sync

We have verified the system's reliability through extensive testing:

  • Sync Audit: Verification that .env variables match C++ connection strings.
  • Integration Tests: Verifying the full CRUD lifecycle inside the Docker network.
  • Log Analysis: Real-time monitoring of database handshakes via docker logs.

Docker Hub Images

Official images for this project will be pushed to Docker Hub by Student 2. These images are mandatory for the final evaluation.

Component Docker Hub Repository Tag Status
PostgreSQL DB postgres (Official Image) 15 Configured via Volume
C++ Application goktugkaraca/sis-project-app v3.0 Production Ready

Getting Started

Prerequisites

  • Docker & Docker Compose
  • Git

Installation

For detailed installation instructions, please refer to the INSTALL.md file.

Usage

For the user manual and CLI command examples, please refer to the MANUAL.md file.

Project Roadmap

The project follows a strict 4-week development Schedule:

  • Week 1: Project Setup, Planning, and Repository Initialization
  • Week 2: Docker Infrastructure Setup (Dockerfile, Compose, Network)
  • Week 3: C++ Application Development (CRUD, Transactions)
  • Week 4: Final Integration, Testing, and Presentation Prep

Contribution

Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.

  • Branch Strategy: Features must be developed in feature/* branches.
  • Direct Push: Strictly prohibited on main and develop branches.

License

This project is created for educational purposes within the scope of the System Programming course.

About

A containerized Student Information System (SIS) featuring a high-performance C++ backend, PostgreSQL persistence, and a interface. Developed as a System Programming Term Project.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors