Dual Master's in Industrial Engineering & Computer Science | Optimization, Data, Automation
MeetScheduler is a full-stack web app inspired by Doodle. It helps groups create meeting events, invite participants, collect availability, and identify the best time slot once enough people are available.
The project was built for HackaPrompt AI 2026 at the University of Trento, a hackathon focused on building software with large language models and reflecting critically on AI-assisted programming.


| Layer | Technology |
|---|---|
| Frontend | React 18, React Router, Vite, custom CSS |
| Backend | Node.js, Express |
| Data storage | Local JSON file storage |
| Calendar | Google Calendar API |
| Authentication | Google OAuth 2.0 |
| Nodemailer with Gmail SMTP |
git clone https://github.com/lewisndambiri/meeting-scheduler.git
cd meeting-scheduler
cd server
npm install
cd ../client
npm install
Create a server environment file:
cd ../server
cp .env.example .env
Then update .env with your Google OAuth and Gmail app credentials:
GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=your-client-secret
GOOGLE_REDIRECT_URI=http://localhost:3001/api/auth/google/callback
BASE_URL=http://localhost:5173
EMAIL_USER=youremail@gmail.com
EMAIL_PASS=your-app-password
Start the backend:
cd server
npm run dev
Start the frontend in another terminal:
cd client
npm run dev
Open http://localhost:5173.
meeting-scheduler/
├── client/
│ ├── index.html
│ ├── vite.config.js
│ └── src/
│ ├── App.jsx
│ ├── App.css
│ ├── api.js
│ ├── components/
│ │ └── Navbar.jsx
│ └── pages/
│ ├── Home.jsx
│ ├── CreateEvent.jsx
│ └── EventDetail.jsx
├── server/
│ ├── server.js
│ ├── config.js
│ ├── auth.js
│ ├── store.js
│ └── routes/
│ ├── auth.js
│ ├── calendar.js
│ ├── events.js
│ └── invite.js
├── docs/
│ └── assets/
└── README.md
HackaPrompt AI 2026 took place on April 23, 2026 at Polo Fabio Ferrari, Povo, Trento, Italy. The challenge asked students to build software with the help of large language models while observing where AI tools are effective and where human review is still essential.
Key reflections from this project:
Lewis Ndambiri
MIT