This application is a comprehensive resource management tool designed for university students balancing academic responsibilities with part-time employment.
Unlike traditional calendar apps, this tool specifically focuses on opportunity cost analysis. It allows users to track mandatory course attendance against work shifts, providing real-time data on absence limits and potential earnings. The goal is to facilitate strategic planning for better work-life balance.
The dashboard features a dynamic weekly planner that integrates academic schedules with work shifts.
- Conflict Management: Visualizes school vs. work hours to prevent overlaps.
- Income Estimation: Automatically calculates projected earnings based on scheduled work shifts and hourly wage settings.
- Shift Management: Add recurring work shifts or single events with ease.
A dual-progress tracking system ensures students meet attendance requirements without losing track of overall course completion.
- Absence Monitoring: Visualizes used absences against the course's maximum allowance (warning limits included).
- Completion Tracking: A separate progress bar tracks actual participation and course progression.
- Status Indicators: Color-coded alerts (Green/Yellow/Red) indicate the risk level of failing a course due to non-attendance.
This project leverages a modern, type-safe web development stack:
- Frontend: React (via Vite)
- Language: TypeScript for robust type safety.
- State Management & Logic: React Hooks,
date-fnsfor complex date manipulation. - Styling: Tailwind CSS with a custom modern dark theme.
- Animations: Framer Motion for smooth UI transitions.
- Backend / Database: Supabase (PostgreSQL) for real-time data persistence.
- Icons: Lucide React.
- Node.js (v16 or higher)
- npm or yarn
- A Supabase account
-
Clone the repository
git clone [https://github.com/yourusername/student-schedule-manager.git](https://github.com/yourusername/student-schedule-manager.git) cd student-schedule-manager -
Install dependencies
npm install
-
Environment Configuration Create a
.envfile in the root directory and add your Supabase API keys:VITE_SUPABASE_URL=your_supabase_url_here VITE_SUPABASE_ANON_KEY=your_supabase_anon_key_here
-
Run the development server
npm run dev
To replicate the backend infrastructure, run the following SQL commands in the Supabase SQL Editor:
-- 1. Courses Table: Stores course details and attendance records
create table courses (
id uuid default uuid_generate_v4() primary key,
created_at timestamp with time zone default timezone('utc'::text, now()) not null,
name text,
total_lessons numeric,
skipped_lessons numeric default 0,
attended_lessons numeric default 0,
max_absences numeric default 5,
lesson_duration numeric default 1.5,
earned_money numeric default 0,
end_date date
);
-- 2. Calendar Events Table: Stores work shifts and school events
create table calendar_events (
id uuid default uuid_generate_v4() primary key,
created_at timestamp with time zone default timezone('utc'::text, now()) not null,
title text,
type text, -- 'school' or 'work'
start_time timestamp with time zone,
end_time timestamp with time zone,
earnings numeric default 0,
course_id uuid references courses(id) on delete cascade
);