mirror of
https://github.com/aaditagrawal/semester-timetable-v1.git
synced 2026-09-01 10:34:46 +05:30
No description
https://semester-timetable-v1.vercel.app
* chore: add anti-slop oxlint plugin
Vendors the anti-slop Oxlint plugin into tools/oxlint/anti-slop and turns
all fifteen of its rules on at "error", alongside the rules already
configured. Adds oxlint@^1.78.0 and @oxlint/plugins@^1.78.0 as dev
dependencies (oxlint was already there at ^1.77.0; the plugin runtime
needs the two to match).
Config: registers the plugin under jsPlugins, keeps every existing ignore
pattern and adds the agent-tooling directories, the vendored plugin
itself, and the two generated files (lib/elective-options.ts and
lib/allocation-index.ts, both rebuilt by scripts/*.py). The plugin is
also excluded from tsconfig and from oxfmt, since it imports with
explicit .ts extensions and is not ours to reformat.
That surfaced 41 findings in owned source; all are fixed rather than
suppressed:
- The three elective indices no longer start life as `{} as Record<…>`.
A ByElectiveType<T> contract lists the six baskets explicitly and a
perBasket() helper fills every one, so totality is checked where the
records are built instead of merely asserted where they are read.
- normalizeTheme now takes a named StoredTheme wire shape instead of
`unknown` plus typeof narrowing, so the localStorage payload is decoded
at the boundary and the palette maths only ever sees ThemeSettings.
- importSettings walks electiveTypes rather than the payload's own keys.
Same filtering of v1 backups, no `electiveTypes as string[]`, and the
one remaining assertion carries a SAFETY note listing the checks that
make it safe.
- Record annotations over known literals became `satisfies`
(electiveTypeLabels, BACKGROUND_PRESETS, the grid bench selections);
buildThemeCss builds its custom properties as an ordered pair list, so
no index signature is needed to append the chart ramp.
- Casts replaced by narrowing that holds: `instanceof Element` before
closest(), Blob#text() in place of FileReader's
string | ArrayBuffer | null, per-channel gamut clipping instead of
.map() then asserting the triple back, and DayName -> Day by excluding
"SUN" rather than asserting past it.
- Two SSR guards use `"window" in globalThis`; the bench harness types
its subject as `() => void` and names its Round result.
- The remaining assertions are the two Object.fromEntries records in
timetable-data.ts, each with a SAFETY comment explaining why the
entries are total over Day.
lint, typecheck, build and the 49 tests all pass.
* style: format next.config.ts
Pre-existing formatting issue on an otherwise untouched config file,
unrelated to the anti-slop lint change. Folded into this PR so the
format:check CI job passes.
Applied by running the repo's own formatter (oxfmt) on this file only;
no manual edits and no other files reformatted.
---------
Co-authored-by: sherlock <tech@aaditagrawal.com>
|
||
|---|---|---|
| .github/workflows | ||
| .superset | ||
| app | ||
| archived | ||
| bench | ||
| components | ||
| lib | ||
| public | ||
| scripts | ||
| tools/oxlint/anti-slop | ||
| .gitignore | ||
| .oxfmtrc.json | ||
| .oxlintrc.json | ||
| bun.lock | ||
| components.json | ||
| next.config.ts | ||
| package.json | ||
| postcss.config.mjs | ||
| README.md | ||
| tsconfig.json | ||
Timetable Viewer - 4th Year IT_CCE
A modern, responsive, and personalized timetable management application explicitly designed for 4th Year Information Technology & Computer Communication Engineering (Semester VII, AY 2026-27) at Manipal Institute of Technology.
🚀 Features
- Personalized View: Pick your specific electives (PE-3 through PE-7 and the Open Elective) from the full published course baskets — including per-section room allocations — to generate a timetable tailored exactly to your schedule.
- Student Project: Doing the student project instead of an open elective? Pick it from the OE list and those three periods drop out of the day view, week view and calendar export.
- Day & Week Modes: Toggle between a focused daily view and a comprehensive weekly overview.
- Real-time Tracking:
- Active Class: Automatically highlights the current period based on system time.
- Progression: Grays out past classes to help you focus on what's next.
- Configuration Management:
- Persistent Settings: Your selections are saved locally and persist through browser refreshes.
- Export/Import: Share your configuration with classmates or back it up for later use.
- Modern Interface: Built with a sleek, minimalist aesthetic using Next.js, ShadCN, and Radix UI.
- Responsive Design: Fully optimized for both desktop and mobile devices.
🛠️ Tech Stack
- Framework: Next.js 15
- Styling: Tailwind CSS 4
- Components: ShadCN UI / Radix UI
- Icons: Phosphor Icons
- Runtime: Bun
🏃 Getting Started
Prerequisites
Ensure you have Bun installed on your machine.
Installation
-
Clone the repository:
git clone https://github.com/aaditagrawal/semester-timetable-v1 cd timetable-v1 -
Install dependencies:
bun install -
Run the development server:
bun dev -
Open the app: Navigate to http://localhost:3000 in your browser.
📂 Project Structure
app/: Next.js App Router pages and layouts.components/: Reusable UI components (Timetable tiles, Modals, Settings).lib/: Utility functions and the coretimetable-data.tsdefinition.public/: Static assets and icons.
📝 Configuration
The timetable data is centrally managed in lib/timetable-data.ts. This includes:
- Course codes and names.
- Faculty assignments.
- Room numbers.
- Lab batch timings.
🤝 Contributing
This project is tailored for IT_CCE Sem VII. If you find any discrepancies in the schedule or have feature requests, feel free to open a PR or an issue!
Made for MITians by MITians.