https://github.com/flexycode/ccsfen1l_final_project
π€ This repository is intended for our final project in Software Engineer CCSFEN1L by Professor Eliseo Q. Ramirez
https://github.com/flexycode/ccsfen1l_final_project
agile-methodologies software-architecture software-engineering
Last synced: 26 days ago
JSON representation
π€ This repository is intended for our final project in Software Engineer CCSFEN1L by Professor Eliseo Q. Ramirez
- Host: GitHub
- URL: https://github.com/flexycode/ccsfen1l_final_project
- Owner: flexycode
- License: mit
- Created: 2025-08-13T16:21:01.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-10-03T11:29:27.000Z (5 months ago)
- Last Synced: 2025-10-03T13:26:21.905Z (5 months ago)
- Topics: agile-methodologies, software-architecture, software-engineering
- Language: TypeScript
- Homepage:
- Size: 532 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# π’ Detention Facility Management System (DFMS)
### Team Name: [Artificial Ledger Technology](https://github.com/flexycode) Β Β
### Subject & Section: [CCSFEN1L - COM232](https://www.youtube.com/watch?v=fFqxDrmQLnQ&list=RDfFqxDrmQLnQ&start_radio=1)
### Schedule: [MON 3:00PM - 05:40 PM 517 MB - THU 03:00PM - 07:00 PM 408 MB](https://www.youtube.com/watch?v=dL7Vn7hJDAk&list=RDdL7Vn7hJDAk&start_radio=1)
### Professor: [Eliseo Q. Ramirez](https://github.com/)Β Β Β
### No. of Units: [3 Units](https://www.youtube.com/watch?v=UVJSA2N39NU&list=RDUVJSA2N39NU&start_radio=1)
### Prerequisite: [CCDATRCL - DATA STRUCTURES AND ALGORITHMS](https://github.com/flexycode/CCDATRCL)
### Course Subject Link: [Click Here](https://github.com/flexycode/CCSFEN1L)
# ποΈ Powered by Artificial Ledger Technology
### Detention Facility Management System: A Digital Solution for Correctional Facility Operations
[](https://nextjs.org/)
[](https://www.typescriptlang.org/)
[](https://neon.tech/)
[](LICENSE)
[Features](#-features) β’ [Architecture](#-system-architecture) β’ [Installation](#-installation) β’ [Usage](#-usage) β’ [API](#-api-documentation) β’ [Contributing](#-contributing)
---
## π Table of Contents
- [Overview](#-overview)
- [Features](#-features)
- [System Architecture](#-system-architecture)
- [Technology Stack](#-technology-stack)
- [Installation](#-installation)
- [Configuration](#-configuration)
- [Usage](#-usage)
- [API Documentation](#-api-documentation)
- [Database Schema](#-database-schema)
- [Security](#-security)
- [Testing](#-testing)
- [Contributing](#-contributing)
- [License](#-license)
- [Acknowledgments](#-acknowledgments)
- [Contact](#-contact)
---
## π Overview
**Artificial Ledger** (formerly Detention Facility Management System - DFMS) is a comprehensive digital platform designed to modernize correctional facility operations through intelligent automation and data-driven insights. The system enables government agencies to efficiently manage Persons Deprived of Liberty (PDL), track visitor interactions, log incidents, and generate comprehensive reports.
### π― Project Goals
- **Digitize** traditional paper-based detention facility processes
- **Enhance** security protocols through role-based access control
- **Improve** operational efficiency with real-time monitoring
- **Provide** data-driven insights for facility administrators
- **Support** rehabilitation and reintegration objectives
### π Key Highlights
- β
**99.9% Uptime** - Reliable system availability
- β
**500+ Concurrent Users** - Scalable architecture
- β
**<2s Response Time** - Optimized performance
- β
**AES-256 Encryption** - Enterprise-grade security
- β
**Role-Based Access** - Granular permission control
---
## β¨ Features
### π₯ PDL (Persons Deprived of Liberty) Management
- **Complete CRUD Operations** - Create, read, update, and delete inmate records
- **Digital Profile Management** - Store personal information, photographs, and documents
- **Case Tracking** - Monitor case details, court dates, and legal status
- **Medical Records** - Maintain health information and treatment history
- **Status Management** - Track inmate status (active, transferred, released)
- **Search & Filter** - Advanced search capabilities with multiple criteria
### πͺ Visitor Management System
- **Visitor Registration** - Pre-register visitors with ID verification
- **Visit Scheduling** - Schedule and manage visit appointments
- **Check-in/Check-out** - Real-time visitor tracking
- **Visitor History** - Complete audit trail of all visits
- **Blacklist Management** - Maintain restricted visitor lists
- **Relationship Tracking** - Document visitor-inmate relationships
### π
Visit Tracking
- **Visit Logs** - Comprehensive visit documentation
- **Time Tracking** - Accurate visit duration monitoring
- **Visit Status** - Track scheduled, completed, and cancelled visits
- **Visitor-Inmate Mapping** - Link visitors to specific inmates
- **Visit Reports** - Generate visit statistics and analytics
### π¨ Incident Logging & Reporting
- **Structured Documentation** - Standardized incident reporting
- **Categorization** - Classify incidents by type and severity
- **Involved Parties** - Track all individuals involved in incidents
- **Evidence Management** - Attach documents and photos
- **Follow-up Actions** - Monitor incident resolution
- **Incident Analytics** - Identify trends and patterns
### π Analytics & Reporting
- **Dashboard Metrics** - Real-time facility statistics
- **Custom Reports** - Generate reports based on specific criteria
- **Data Visualization** - Charts and graphs for data insights
- **Export Capabilities** - Export data in PDF, CSV, and Excel formats
- **Trend Analysis** - Identify patterns in facility operations
- **Occupancy Tracking** - Monitor facility capacity utilization
### π Security & Authentication
- **Session-Based Authentication** - Secure user authentication
- **Role-Based Access Control (RBAC)** - Granular permission management
- **Audit Trails** - Complete logging of all system activities
- **Data Encryption** - Protect sensitive information
- **Session Management** - Automatic timeout and security controls
---
## ποΈ System Architecture
### High-Level Architecture
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CLIENT LAYER β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Next.js 14 Frontend (React 19) β β
β β ββββββββββββββ ββββββββββββββ ββββββββββββββββββββββ β β
β β β Pages β β Components β β Context/Hooks β β β
β β β - Inmates β β - Forms β β - Auth Context β β β
β β β - Visitorsβ β - Tables β β - API Client β β β
β β β - Visits β β - Dialogs β β - State Mgmt β β β
β β β - Incidentsβ β - Layout β β β β β
β β ββββββββββββββ ββββββββββββββ ββββββββββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β HTTP/HTTPS
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β APPLICATION LAYER β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Next.js API Routes (Backend) β β
β β ββββββββββββββ ββββββββββββββ ββββββββββββββββββββββ β β
β β β Auth β β PDL β β Visitors β β β
β β β /api/auth β β /api/pdl β β /api/visitors β β β
β β ββββββββββββββ ββββββββββββββ ββββββββββββββββββββββ β β
β β ββββββββββββββ ββββββββββββββ ββββββββββββββββββββββ β β
β β β Visits β β Incidents β β Middleware β β β
β β β/api/visits β β/api/incidentsβ β - Auth Check β β β
β β ββββββββββββββ ββββββββββββββ ββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SQL
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DATA LAYER β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β PostgreSQL Database (Neon) β β
β β ββββββββββββββ ββββββββββββββ ββββββββββββββββββββββ β β
β β β PDL β β Visitors β β Visits β β β
β β β Table β β Table β β Table β β β
β β ββββββββββββββ ββββββββββββββ ββββββββββββββββββββββ β β
β β ββββββββββββββ ββββββββββββββ ββββββββββββββββββββββ β β
β β β Incidents β β Users β β Audit Logs β β β
β β β Table β β Table β β Table β β β
β β ββββββββββββββ ββββββββββββββ ββββββββββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
### Component Architecture
```
src/
βββ app/ # Next.js App Router
β βββ api/ # API Routes (Backend)
β β βββ auth/ # Authentication endpoints
β β β βββ login/
β β β βββ verify/
β β βββ pdl/ # PDL management endpoints
β β βββ visitors/ # Visitor management endpoints
β β βββ visits/ # Visit tracking endpoints
β β βββ incidents/ # Incident logging endpoints
β βββ inmates/ # Inmate management pages
β βββ visitors/ # Visitor management pages
β βββ visits/ # Visit tracking pages
β βββ incidents/ # Incident reporting pages
β βββ layout.tsx # Root layout
β βββ page.tsx # Dashboard/Home page
β βββ globals.css # Global styles
β
βββ components/ # React Components
β βββ auth/ # Authentication components
β β βββ login-form.tsx
β βββ inmates/ # Inmate-related components
β β βββ inmate-form.tsx
β β βββ inmate-details.tsx
β βββ visitors/ # Visitor-related components
β β βββ visitor-form.tsx
β β βββ visitor-details.tsx
β βββ visits/ # Visit-related components
β β βββ visit-form.tsx
β β βββ visit-details.tsx
β βββ incidents/ # Incident-related components
β β βββ incident-form.tsx
β β βββ incident-details.tsx
β βββ layout/ # Layout components
β β βββ main-layout.tsx
β β βββ sidebar.tsx
β β βββ header.tsx
β βββ ui/ # Reusable UI components (shadcn/ui)
β
βββ contexts/ # React Context
β βββ auth-context.tsx # Authentication context
β
βββ lib/ # Utility libraries
β βββ api-client.ts # API client wrapper
β βββ auth.ts # Authentication utilities
β βββ simple-auth.ts # Simple auth implementation
β βββ database.ts # Database connection
β βββ utils.ts # Helper functions
β
βββ hooks/ # Custom React hooks
β βββ use-mobile.ts # Mobile detection hook
β βββ use-toast.ts # Toast notification hook
β
βββ scripts/ # Database scripts
βββ 01-create-artificial-ledger-tables.sql
```
### Data Flow Architecture
```
ββββββββββββ ββββββββββββ ββββββββββββ
β Client ββββββββββΆβ API ββββββββββΆβ Databaseβ
β (React) β β Routes β β (Neon) β
ββββββββββββ ββββββββββββ ββββββββββββ
β β β
β 1. User Action β β
ββββββββββββββββββββββΆβ β
β β 2. Validate Auth β
β ββββββββββββββββββββββΆβ
β β β
β β 3. Execute Query β
β ββββββββββββββββββββββΆβ
β β β
β β 4. Return Data β
β βββββββββββββββββββββββ
β 5. Update UI β β
ββββββββββββββββββββββ β
β β β
```
### Security Architecture
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Security Layers β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Layer 1: Authentication β
β - Session-based authentication β
β - Secure token storage β
β - Automatic session timeout β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Layer 2: Authorization β
β - Role-based access control (RBAC) β
β - Route-level protection β
β - API endpoint guards β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Layer 3: Data Protection β
β - SQL injection prevention (parameterized queries) β
β - XSS protection (React sanitization) β
β - CSRF protection (SameSite cookies) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Layer 4: Audit & Monitoring β
β - Comprehensive audit trails β
β - Activity logging β
β - Error tracking β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
---
## π οΈ Technology Stack
### Frontend
| Technology | Version | Purpose |
|------------|---------|---------|
|  | 14.2.25 | React framework with SSR/SSG |
|  | 19 | UI library |
|  | 5.0 | Type-safe JavaScript |
|  | 4.1.9 | Utility-first CSS framework |
|  | Latest | Component library |
|  | Latest | Accessible component primitives |
### Backend
| Technology | Version | Purpose |
|------------|---------|---------|
|  | 14.2 | API routes |
|  | 22 | JavaScript runtime |
|  | 5.0 | Type-safe backend code |
### Database
| Technology | Version | Purpose |
|------------|---------|---------|
|  | Latest | Relational database |
|  | 1.0.1 | Serverless PostgreSQL |
### Development Tools
| Tool | Purpose |
|------|---------|
|  | Version control |
|  | Code repository |
|  | Code editor |
|  | Code linting |
|  | Code formatting |
---
## π¦ Installation
### Prerequisites
Before you begin, ensure you have the following installed:
- **Node.js** (v18.0.0 or higher) - [Download](https://nodejs.org/)
- **pnpm** (v8.0.0 or higher) - [Install](https://pnpm.io/installation)
- **Git** - [Download](https://git-scm.com/)
- **PostgreSQL** database (Neon recommended) - [Sign up](https://neon.tech/)
### Step 1: Clone the Repository
```bash
# Clone the repository
git clone https://github.com/flexycode/CCSFEN1L_FINAL_PROJECT.git
# Navigate to the project directory
cd CCSFEN1L_FINAL_PROJECT
```
### Step 2: Install Dependencies
```bash
# Install dependencies using pnpm
pnpm install
# Or using npm
npm install
# Or using yarn
yarn install
```
### Step 3: Set Up Environment Variables
Create a `.env.local` file in the root directory:
```bash
# Copy the example environment file
cp .env.example .env.local
```
Add the following environment variables:
```env
# Database Configuration (Neon)
DATABASE_URL="postgresql://username:password@host/database?sslmode=require"
POSTGRES_URL="postgresql://username:password@host/database?sslmode=require"
POSTGRES_PRISMA_URL="postgresql://username:password@host/database?sslmode=require"
POSTGRES_URL_NON_POOLING="postgresql://username:password@host/database?sslmode=require"
# Database Connection Details
PGHOST="your-neon-host.neon.tech"
PGUSER="your-username"
PGPASSWORD="your-password"
PGDATABASE="your-database-name"
# Authentication
JWT_SECRET="your-super-secret-jwt-key-change-this-in-production"
# Application
NEXT_PUBLIC_APP_URL="http://localhost:3000"
```
### Step 4: Initialize the Database
Run the database initialization script:
```bash
# Execute the SQL script to create tables
# You can run this through your database client or Neon console
psql $DATABASE_URL -f scripts/01-create-artificial-ledger-tables.sql
```
Or manually execute the SQL script in your Neon dashboard.
### Step 5: Run the Development Server
```bash
# Start the development server
pnpm dev
# Or using npm
npm run dev
# Or using yarn
yarn dev
```
The application will be available at `http://localhost:3000`
### Step 6: Build for Production
```bash
# Build the application
pnpm build
# Start the production server
pnpm start
```
---
## βοΈ Configuration
### Database Configuration
The system uses Neon (Serverless PostgreSQL) for database management. Configure your database connection in `.env.local`:
```env
DATABASE_URL="postgresql://user:password@host/database"
```
### Authentication Configuration
Configure JWT secret for secure authentication:
```env
JWT_SECRET="your-secret-key-min-32-characters-long"
```
### Application Settings
Customize application behavior in `next.config.mjs`:
```javascript
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
swcMinify: true,
// Add your custom configuration here
}
export default nextConfig
```
---
## π Usage
### Default Login Credentials
For initial setup, use these default credentials:
```
Username: admin
Password: admin123
```
**β οΈ Important:** Change the default password immediately after first login.
### Creating a New Inmate Record
1. Navigate to **Inmates** from the sidebar
2. Click **Add New Inmate** button
3. Fill in the required information:
- Personal details (name, date of birth, etc.)
- Case information
- Medical records (if applicable)
4. Click **Save** to create the record
### Registering a Visitor
1. Navigate to **Visitors** from the sidebar
2. Click **Register Visitor** button
3. Enter visitor information:
- Full name
- Contact details
- ID verification
- Relationship to inmate
4. Click **Register** to complete
### Scheduling a Visit
1. Navigate to **Visits** from the sidebar
2. Click **Schedule Visit** button
3. Select:
- Visitor from registered list
- Inmate to visit
- Date and time
- Visit duration
4. Click **Schedule** to confirm
### Logging an Incident
1. Navigate to **Incidents** from the sidebar
2. Click **Log Incident** button
3. Provide incident details:
- Type and severity
- Involved parties
- Description
- Evidence (photos/documents)
4. Click **Submit** to log the incident
---
## π‘ API Documentation
### Authentication Endpoints
#### POST `/api/auth/login`
Authenticate a user and create a session.
**Request Body:**
```json
{
"username": "admin",
"password": "admin123"
}
```
**Response:**
```json
{
"success": true,
"token": "session-token-here",
"user": {
"id": 1,
"username": "admin",
"role": "admin"
}
}
```
#### POST `/api/auth/verify`
Verify a session token.
**Headers:**
```
Authorization: Bearer
```
**Response:**
```json
{
"valid": true,
"user": {
"id": 1,
"username": "admin",
"role": "admin"
}
}
```
### PDL Management Endpoints
#### GET `/api/pdl`
Retrieve all PDL records with pagination.
**Query Parameters:**
- `page` (number): Page number (default: 1)
- `limit` (number): Records per page (default: 10)
- `search` (string): Search term (optional)
**Response:**
```json
{
"data": [
{
"id": 1,
"first_name": "John",
"last_name": "Doe",
"date_of_birth": "1990-01-01",
"status": "active",
"admission_date": "2024-01-01"
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 100,
"totalPages": 10
}
}
```
#### POST `/api/pdl`
Create a new PDL record.
**Request Body:**
```json
{
"first_name": "John",
"last_name": "Doe",
"date_of_birth": "1990-01-01",
"gender": "male",
"address": "123 Main St",
"case_number": "CASE-2024-001",
"admission_date": "2024-01-01",
"status": "active"
}
```
#### PUT `/api/pdl/:id`
Update an existing PDL record.
#### DELETE `/api/pdl/:id`
Delete a PDL record.
### Visitor Management Endpoints
#### GET `/api/visitors`
Retrieve all visitor records.
#### POST `/api/visitors`
Register a new visitor.
**Request Body:**
```json
{
"first_name": "Jane",
"last_name": "Smith",
"contact_number": "+1234567890",
"email": "jane@example.com",
"id_type": "drivers_license",
"id_number": "DL123456",
"relationship": "family"
}
```
### Visit Tracking Endpoints
#### GET `/api/visits`
Retrieve all visit records.
#### POST `/api/visits`
Schedule a new visit.
**Request Body:**
```json
{
"visitor_id": 1,
"pdl_id": 1,
"visit_date": "2024-01-15",
"visit_time": "14:00",
"duration_minutes": 60,
"purpose": "family_visit"
}
```
### Incident Logging Endpoints
#### GET `/api/incidents`
Retrieve all incident records.
#### POST `/api/incidents`
Log a new incident.
**Request Body:**
```json
{
"incident_type": "altercation",
"severity": "medium",
"description": "Incident description here",
"involved_pdl_ids": [1, 2],
"location": "Cell Block A",
"incident_date": "2024-01-15T10:30:00Z"
}
```
---
## ποΈ Database Schema
### Entity Relationship Diagram
```
βββββββββββββββββββ βββββββββββββββββββ
β PDL β β Visitors β
βββββββββββββββββββ€ βββββββββββββββββββ€
β id (PK) β β id (PK) β
β first_name β β first_name β
β last_name β β last_name β
β date_of_birth β β contact_number β
β gender β β email β
β address β β id_type β
β case_number β β id_number β
β admission_date β β relationship β
β status β β created_at β
β created_at β β updated_at β
β updated_at β βββββββββββββββββββ
βββββββββββββββββββ β
β β
β β
βββββββββββββ¬ββββββββββββββββ
β
ββββββββΌβββββββ
β Visits β
βββββββββββββββ€
β id (PK) β
β visitor_id βββββββββββ
β pdl_id βββββββββββ€
β visit_date β β
β visit_time β β
β duration β β
β status β β
β created_at β β
βββββββββββββββ β
β
βββββββββββββββββββ βββββββββββββββββββ
β Incidents β β Users β
βββββββββββββββββββ€ βββββββββββββββββββ€
β id (PK) β β id (PK) β
β incident_type β β username β
β severity β β password_hash β
β description β β role β
β location β β created_at β
β incident_date β β updated_at β
β reported_by βββββββββββ€ β
β created_at β βββββββββββββββββββ
β updated_at β
βββββββββββββββββββ
```
### Table Descriptions
#### PDL Table
Stores information about Persons Deprived of Liberty (inmates).
**Columns:**
- `id`: Primary key
- `first_name`, `last_name`: Inmate name
- `date_of_birth`: Date of birth
- `gender`: Gender identity
- `address`: Last known address
- `case_number`: Unique case identifier
- `admission_date`: Date of admission
- `status`: Current status (active, transferred, released)
#### Visitors Table
Stores registered visitor information.
**Columns:**
- `id`: Primary key
- `first_name`, `last_name`: Visitor name
- `contact_number`: Phone number
- `email`: Email address
- `id_type`: Type of identification
- `id_number`: ID number
- `relationship`: Relationship to inmate
#### Visits Table
Tracks all visit records.
**Columns:**
- `id`: Primary key
- `visitor_id`: Foreign key to Visitors
- `pdl_id`: Foreign key to PDL
- `visit_date`: Date of visit
- `visit_time`: Time of visit
- `duration_minutes`: Visit duration
- `status`: Visit status (scheduled, completed, cancelled)
#### Incidents Table
Logs facility incidents.
**Columns:**
- `id`: Primary key
- `incident_type`: Type of incident
- `severity`: Severity level (low, medium, high, critical)
- `description`: Detailed description
- `location`: Location of incident
- `incident_date`: Date and time of incident
- `reported_by`: User who reported the incident
---
## π Security
### Security Features
1. **Authentication**
- Session-based authentication
- Secure token storage
- Automatic session timeout
- Password hashing (bcrypt)
2. **Authorization**
- Role-based access control (RBAC)
- Route-level protection
- API endpoint guards
- Granular permissions
3. **Data Protection**
- SQL injection prevention (parameterized queries)
- XSS protection (React sanitization)
- CSRF protection (SameSite cookies)
- Input validation and sanitization
4. **Audit & Monitoring**
- Comprehensive audit trails
- Activity logging
- Error tracking
- Security event monitoring
### Security Best Practices
- β
Always use HTTPS in production
- β
Keep dependencies up to date
- β
Use strong passwords (min 12 characters)
- β
Enable two-factor authentication (when available)
- β
Regular security audits
- β
Backup data regularly
- β
Monitor system logs
- β
Implement rate limiting
### Reporting Security Issues
If you discover a security vulnerability, please email: **security@example.com**
**Do not** create public GitHub issues for security vulnerabilities.
---
## π§ͺ Testing
### Running Tests
```bash
# Run all tests
pnpm test
# Run tests in watch mode
pnpm test:watch
# Run tests with coverage
pnpm test:coverage
```
### Test Coverage
The project aims for minimum 80% code coverage across:
- Unit tests
- Integration tests
- End-to-end tests
### Testing Strategy
1. **Unit Testing**
- Test individual components and functions
- Mock external dependencies
- Use Jest and React Testing Library
2. **Integration Testing**
- Test API endpoints
- Test database interactions
- Validate authentication flows
3. **End-to-End Testing**
- Test complete user workflows
- Use Cypress or Playwright
- Test across different browsers
---
## π€ Contributing
We welcome contributions from the community! Here's how you can help:
### How to Contribute
1. **Fork the Repository**
```bash
# Click the "Fork" button on GitHub
```
2. **Clone Your Fork**
```bash
git clone https://github.com/your-username/CCSFEN1L_FINAL_PROJECT.git
cd CCSFEN1L_FINAL_PROJECT
```
3. **Create a Branch**
```bash
git checkout -b feature/your-feature-name
```
4. **Make Your Changes**
- Write clean, documented code
- Follow the coding standards
- Add tests for new features
5. **Commit Your Changes**
```bash
git add .
git commit -m "feat: add your feature description"
```
6. **Push to Your Fork**
```bash
git push origin feature/your-feature-name
```
7. **Create a Pull Request**
- Go to the original repository
- Click "New Pull Request"
- Describe your changes
### Coding Standards
- Use TypeScript for type safety
- Follow ESLint and Prettier configurations
- Write meaningful commit messages (Conventional Commits)
- Add JSDoc comments for functions
- Write tests for new features
### Commit Message Format
```
():
```
**Types:**
- `feat`: New feature
- `fix`: Bug fix
- `docs`: Documentation changes
- `style`: Code style changes (formatting)
- `refactor`: Code refactoring
- `test`: Adding or updating tests
- `chore`: Maintenance tasks
---
Β
# π [License](https://github.com/flexycode/CCSFEN1L_FINAL_PROJECT/blob/main/LICENSE)
This project is developed as part of academic requirements for CCSFEN1L - Software Engineering course.
This project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.
```
MIT License
Copyright (c) 2025 National University Manila - BSIT Students
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```
---
## π Acknowledgments
### Development Team
**National University - Manila**
College of Computing and Information Technologies
Bachelor of Science in Information Technology
- **Jay Arre P. Talosig** - Lead Developer - [GitHub](https://github.com/flexycode)
- **Marvin T. Mendoza** - Backend Developer
- **Reynan G. Jalamana** - Frontend Developer
### Special Thanks
- **Professor Eliseo Q. Ramirez** - Project Advisor and Mentor
- **National University Manila** - Academic support and resources
### Technology Partners
- [Vercel](https://vercel.com) - Deployment platform
- [Neon](https://neon.tech) - Serverless PostgreSQL
- [shadcn/ui](https://ui.shadcn.com) - Component library
- [Next.js](https://nextjs.org) - React framework
### Alignment with UN SDG
This project aligns with **UN Sustainable Development Goal 16**: Peace, Justice, and Strong Institutions.
---
## π Contact
### Project Links
- **GitHub Repository**: [https://github.com/flexycode/CCSFEN1L_FINAL_PROJECT](https://github.com/flexycode/CCSFEN1L_FINAL_PROJECT)
- **Documentation**: [Wiki](https://github.com/flexycode/CCSFEN1L_FINAL_PROJECT/wiki)
- **Issue Tracker**: [Issues](https://github.com/flexycode/CCSFEN1L_FINAL_PROJECT/issues)
### Team Contact
- **Jay Arre P. Talosig** - talosigjp@students.national-u.edu.ph
- **Marvin T. Mendoza** - mendozamt@students.national-u.edu.ph
- **Reynan G. Jalamana** - jalamanarg@students.national-u.edu.ph
### Institution
**National University - Manila**
551 M.F. Jhocson St, Sampaloc, Manila, 1008 Metro Manila
Website: [https://www.national-u.edu.ph](https://www.national-u.edu.ph)
---
## π Project Status





### Roadmap
- [x] Core system architecture
- [x] Authentication system
- [x] PDL management module
- [x] Visitor management system
- [x] Visit tracking functionality
- [x] Incident logging system
- [ ] Advanced analytics dashboard
- [ ] Mobile application
- [ ] Biometric integration
- [ ] AI-powered incident prediction
- [ ] Integration with national databases
---
### β Star this repository if you find it helpful!
**Made with β€οΈ by National University Manila BSIT Students**
[Report Bug](https://github.com/flexycode/CCSFEN1L_FINAL_PROJECT/issues) β’ [Request Feature](https://github.com/flexycode/CCSFEN1L_FINAL_PROJECT/issues) β’ [Documentation](https://github.com/flexycode/CCSFEN1L_FINAL_PROJECT/wiki)
### πΌ Project Team β‘
* π [Jay Arre Talosig](https://github.com/flexycode) - Machine Learning Engineer | Blockchain Developer | Bioinformatics Scientist
* π΅οΈ Marvin T. Mendoza - Project Manager | Lead Developer | Systems Architect
* π [Reynan G. Jalamana](https://github.com/jalamana21) - Software Engineer | Frontend Developer | UI/UX Designer
### π― Alignment with SDG 16
This project directly supports **UN Sustainable Development Goal 16: Peace, Justice, and Strong Institutions** by:
* Promoting transparent and accountable governance
* Enhancing institutional effectiveness
* Improving access to information and documentation
* Strengthening public administration systems
# π [Acknowledgements](-acknowledgements)Β Β Β Β Β
### β¨ Professor
```
Professor Mr. Eliseo Ramirez background coming soon.
```
# π« [Changelogs](-changelogs)
Chronological list of updates, bug fixes, new features, and other modifications for ```name of the project```.
### π¦ Version 1.0.0 - August 14, 2025
**Project Initialization**
- β¨ Created initial repository structure
- β¨ Set up project folder organization
- β¨ Established development workflow
- π§ Initial project configuration and setup
### π Version 1.0.1 - August 26, 2025
**Design & Architecture**
- β¨ Database schema design and ERD creation
- π User interface mockups and wireframes
- π System architecture documentation
- ποΈ Technology stack finalization
- π Development environment setup
- π Technical documentation updates
### π Version 2.0.0 - September 15, 2025
**Core Development Phase**
- β¨ Authentication and authorization system
- π Document upload and management features
- π Routing and workflow implementation
- ποΈ Database integration and ORM setup
- π¨ User interface development
---
**Legend:**
- β¨ New Feature
- π Changed/Updated
- π Bug Fix
- π§ Technical Improvement
- π Documentation
- π¨ UI/UX Enhancement
- π Security
- π Data/Analytics
- π Performance
---
π§ CCSFEN1L FINAL PROJECT - Detention Facility Management System
#### [Back to Table of Content](#-introduction)
---
Β Β Β Β