A full featured frontend project built with vanilla JS to practice and learn OOP in JS, observables (design pattern).
-
This is a fictional Summer class app that shows the schedules.
-
It has 2 views :
-
Daily schedule: This view shows the user the current day schedule,
- the classes are presented in cards; on initial load each card time is compared to the current hour, and cards for classes that have already passed the current hour are styled differently
- Shows :
- Activity
<select>: Filters activities for the day based on the selected activity - Date
<input>: It updates the list depending on the selected date.- Saturdays and Sundays don't have activities, they show empty card
- Activity
-
Weekly Schedule :
- Displays a list with all the days that contains an activity
- Date input is hidden in weekly views
- Activity Select, help the user to filter by class; by default it shows all classes
-
-
When selecting an activity from the select, a box shows with a brief description of that activity
This project was inspired by a Figma concept and designed to study OOP in JS with classes and this
- The layout is inspired by a Figma concept but is not identical; it served as visual reference while practicing JS
- Showcase production-level thinking in a modular, maintainable codebase.
- JavaScript (ES6+)
- Object Oriented Programming (OOP) with ES6 classes
- Observable pattern for event handling
- DOM manipulation and event handling
- HTML/CSS (mobile-first layout)
- Hands-on mastery of advanced JS
- Demonstrate modular, maintainable, production-level code
- Showcase problem-solving and interactive UI features
index.html- main HTML entrystyles/- CSS stylesjs/constants.js- Project constants (IDs, activities list)utils.js- helper functionsobservable.js- Observable class for event subscriptionmain.js- Main entry point, wires all componentsSelect.js- Select base extends for Dropdown and Date componentsToggleScheduleView.js- Toggle daily/weekly scheduleFooter.js- Footer linksDaySchedule/- Contains all component related to rendering daily schedulesActivityDescription.js- Activity Description renderingActivityCard.js- Single activity card renderingDayTitle.js- Header for each daySchedule.js- Schedule list component
Some UI concepts for this app were explored as part of a personal UI/UX study. These exercises helped me understand user flows, layout, and interaction design, which I applied to the frontend implementation.
Note: this project focuses on JavaScript OOP, and modular architecture, not visual design. The design references were used purely to practice creating usable interfaces in code.

