https://github.com/swebi/orderly
Orderly scrapes SRM Academia to fetch the current day order and seamlessly syncs your class schedule with Google Calendar. Just log in once, save your timetable, your calendar will update automatically every day.
https://github.com/swebi/orderly
bull bullmq express google-api google-calendar magic-ui postgresql prisma puppeteer react redis shadcn-ui
Last synced: 7 months ago
JSON representation
Orderly scrapes SRM Academia to fetch the current day order and seamlessly syncs your class schedule with Google Calendar. Just log in once, save your timetable, your calendar will update automatically every day.
- Host: GitHub
- URL: https://github.com/swebi/orderly
- Owner: Swebi
- Created: 2025-01-26T03:46:36.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-02-22T17:59:30.000Z (8 months ago)
- Last Synced: 2025-02-22T18:39:57.551Z (8 months ago)
- Topics: bull, bullmq, express, google-api, google-calendar, magic-ui, postgresql, prisma, puppeteer, react, redis, shadcn-ui
- Language: JavaScript
- Homepage: https://orderly.suhayb.site
- Size: 671 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Orderly
Orderly scrapes SRM Academia to fetch the current day order and seamlessly
syncs your class schedule with Google Calendar.Just log in once, save your timetable and let Orderly handle the rest. Your calendar will update automatically every day.
## Features
- **Automated Day Order Scraping** – Uses Puppeteer to scrape the daily order from Academia.
- **Google Calendar Integration** – Syncs your classes automatically based on your saved timetable.
- **Real-Time Monitoring** – Powered by BullMQ for reliable job handling for errors and retries. Uses BullBoard to track job execution and logs.## Usage
1. Log in using your Google account.
2. Add your subjects
3. Go to edit timetable and add your classes for each day order
4. **Save your timetable** in the app
5. Enable automated events
6. Click **Manual Trigger** to add your schedule into google calendar the first time **(Optional)**Orderly will now scrape academia daily at midnight and your classes into your google calendar
## Tech Stack
### **Backend**
- [Express](https://expressjs.com/)
- [Prisma](https://www.prisma.io/)
- [BullMQ](https://docs.bullmq.io/) - Job queue for handling background tasks like scraping and calendar event scheduling for mutliple users.
- [BullBoard](https://github.com/felixmosh/bull-board) – UI dashboard for monitoring job queues.
- [Google APIs](https://developers.google.com/) – For authentication and Google Calendar integration.
- [Puppeteer](https://pptr.dev/) – Headless browser for web scraping.
- [Postgres](https://www.postgresql.org/)
- [Redis](https://redis.io/)### **Frontend**
- [React](https://react.dev/)
- [Vite](https://vitejs.dev/)
- [Shadcn](https://ui.shadcn.com/)
- [MagicUI](https://magicui.design/)
- [TsParticles](https://github.com/matteobruni/tsparticles)### **Deployment**
- **Backend:** AWS EC2
- **Frontend:** Vercel## App Preview
![]()
![]()
### Google Calendar
### Bull Board
![]()
![]()
## Installation & Setup
### **Backend**
1. Clone the repository:
```sh
git clone https://github.com/swebi/Orderly.git
cd server
```
2. Install dependencies:
```sh
pnpm install
```
3. Set up environment variables in a .env file:
```env
EMAIL =
PASSWORD =
DATABASE_URL=
CLIENT_ID=
CLIENT_SECRET=
SERVER_URL=
REDIRECT_URL=
ADMIN_PASSWORD=
CLIENT_URL=
```
4. Run database migrations:
```sh
pnpm dlx prisma db push
```
5. Start the server:
```sh
pnpm dev
```### **Frontend**
1. Navigate to the frontend folder:
```sh
cd client
```
2. Install dependencies:
```sh
pnpm install
```
3. Set up environment variables in a .env file:
```env
VITE_PUBLIC_SERVER_URL =
VITE_PUBLIC_GITHUB_URL =
```
4. Start the server:
```sh
pnpm dev
```