Welcome!
Your new Timetable Module is here to make life in the EduPrime ecosystem a breeze. Built with Ionic + Vue.js and packed with AI magic, you'll never miss a class again.
- Schedule Management: View and tweak weekly class timetables in a snap.
- AI Assistance: Chat with the AI for smart rescheduling suggestions.
- Responsive UI: Clean, mobile-first design powered by Ionic and Vue.
-
Clone the main project and install dependencies:
git clone --recurse-submodules https://github.com/EduPrime/app.git -b schedule-poc cd app npm install -
Initialize & update all modules by running our custom script:
bun update-submodules.ts
-
Install and serve the Timetable module independently:
cd src/modules/timetable npm install npm run serve
-
Test standalone:
cd modules/timetable && npm run serve
-
To update the submodule:
cd modules/timetable git pull origin main cd ../.. git add modules/timetable git commit -m "Update Timetable Module to latest"
-
Make changes directly in
modules/timetable, commit & push there, then bump the ref in the main project.
This was whipped up with the EduPrime Generator—your shortcut to modern school tools.
The project manages "modules" in a clean, automated way, integrating them seamlessly with Vite and Vue Router:
-
Organization
- Each functional domain (e.g.,
ged,institution,school-management, etc.) lives undersrc/modules/. - A module can include its own components, services, views,
routes.ts, and an entry pointindex.ts. - Git submodules are used for modules needing separate versioning and reuse.
- Each functional domain (e.g.,
-
Automatic Module Loading (Vite + Vue)
In
src/main.ts:const modules = import.meta.glob('./modules/*/index.ts', { eager: true }) for (const path in modules) { const mod: any = modules[path] if (mod.default?.install) app.use(mod.default) }
This pattern lets each module register its components or plugins globally if needed.
-
Dynamic Module Routes
In
src/router/index.ts:const moduleRoutes = import.meta.glob('../modules/**/routes.ts', { eager: true }) const dynamicRoutes: CustomRouteRecordRaw[] = [] for (const path in moduleRoutes) { dynamicRoutes.push(...moduleRoutes[path].default) }
Each module defines its own routes, automatically aggregated by the main router.
-
Custom Vite Plugin
A
vite-plugin-routes.tscan generate a virtual file containing all module routes, further simplifying integration. -
Git Submodules
Modules that are separate repos appear as submodules in
.gitmodules, enabling decoupled development and independent version control.
Open issues or PRs in the timetable repo. All feedback and improvements are welcome!
MIT © EduPrime
Hermes Alves 😎