An open API service indexing awesome lists of open source software.

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.

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

image
image
image

### Google Calendar

image

### Bull Board

image
image
image

## 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
```