AI-powered scheduling and real-time collaboration platform. Create and manage appointments with natural language, resolve conflicts automatically, collaborate in live workspaces (whiteboard, shared docs, video), and stay on top of your schedule with a modern dashboard and notifications.
- AI Assistant: Parse natural language requests, suggest optimal time slots, detect conflicts, and generate meeting agendas (Groq LLaMA3-based, with deterministic fallbacks).
- Smart Scheduling Wizard: End-to-end guided flow from text input to conflict resolution and confirmation.
- Real-time Collaboration: Shared whiteboard, TipTap doc editing via Yjs, WebRTC video calls, in-room chat, and presence.
- Calendar & Dashboard: FullCalendar UI with CRUD, analytics, weekly activity, and trends.
- Notifications: In-app and optional email notifications using per-user SMTP app passwords.
- Secure & Performant: JWT auth, rate limiting, Helmet, CORS; Socket.IO + Yjs websockets.
-
Natural-language scheduling
- Parse: “Schedule a 30-minute call with Sarah next Tuesday afternoon.”
- Deterministic date normalization and validation using
chrono-nodeand server-side checks. - Time slot suggestions honoring working hours, timezone, buffers, and patterns.
- Conflict detection with deterministic overlap logic and AI-backed suggestions.
- Agenda generation for meetings.
-
Smart Scheduling Wizard (
frontend/src/components/SmartSchedulingWizard.js)- Steps: Input → Suggestions → Conflict Resolution → Confirmation.
- Integrates AI parsing, suggestions, conflict checks, and appointment creation.
-
Real-time collaboration workspace (
/collaboration/:appointmentId)- Whiteboard with live drawing broadcast via Socket.IO.
- Shared document editing powered by Yjs and
y-websocket(TipTap editor). - Video conferencing using WebRTC (
simple-peer) with screen sharing. - In-room chat, participant panel, presence, and room size limits.
-
Calendar & Scheduling
- FullCalendar views (month/week/day) with create/edit/delete dialogs.
- Appointment types, locations, descriptions, recurrence flags.
-
Dashboard
- Totals, upcoming, completed, team members, weekly activity, and trends via
/api/stats/dashboard.
- Totals, upcoming, completed, team members, weekly activity, and trends via
-
Notifications
- In-app feed with unread counts; mark one/all as read.
- Optional email notifications using user-configured Gmail App Passwords (stored hashed).
-
Admin panel
- View users, set roles (
user/admin), and delete users with safety checks.
- View users, set roles (
-
Profile management
- Update username/email, notification prefs, change password, delete account.
- Configure email settings and send test emails.
- React 18, React Router v6
- MUI (Material UI)
- React Query (TanStack Query)
- FullCalendar (core/daygrid/timegrid/interaction)
- TipTap editor
- Socket.IO client,
simple-peer(WebRTC) - date-fns, framer-motion, react-hot-toast
- Node.js, Express
- MongoDB with Mongoose
- Auth: JWT
- Security: Helmet, express-rate-limit, CORS
- Realtime: Socket.IO,
ws,y-websocket(Yjs) - AI:
groq-sdk(LLaMA3-70B),chrono-node(date parsing) - Validation/Logging: express-validator, zod (internal), winston
- Email: nodemailer (per-user SMTP via stored app passwords)
- REST API under
/api/*:auth,appointments,users,ai,collaboration,notifications,search,stats
- WebSockets:
- Socket.IO namespace:
/collab(whiteboard, chat, WebRTC signaling, presence) - Yjs websocket endpoint:
ws://<host>:<port>/collab-sync(shared doc sync)
- Socket.IO namespace:
- Data models:
User,Appointment,AISettings,MeetingPatterns,ConflictResolutions,CollaborationRoom,SharedDocument,WhiteboardSnapshot,CollaborationMessage,Notification
- Node.js 18+
- npm 9+ (or pnpm/yarn)
- MongoDB (local or Atlas URI)
git clone <repo-url>
cd Taskuere
# Backend
cd backend
npm install
# Frontend
cd ../frontend
npm installBackend (backend/.env):
PORT=5000
NODE_ENV=development
MONGODB_URI=mongodb://localhost:27017/taskuere
JWT_SECRET=change_me
CLIENT_ORIGIN=http://localhost:3000
GROQ_API_KEY= # optional, enables AI features
COLLAB_ROOM_LIMIT=12 # optionalFrontend (frontend/.env):
REACT_APP_API_URL=http://localhost:5000Notes:
- AI features gracefully degrade if
GROQ_API_KEYis not set (fallback parser still works). - Email notifications use per-user Gmail App Password configured in Profile; no global SMTP env is required.
In two terminals:
# Terminal A (backend)
cd backend
npm run dev
# Terminal B (frontend)
cd frontend
npm startSmoke test:
curl http://localhost:5000/api/test
# -> { "message": "Backend is working!", ... }-
Register or log in. JWT is stored in
localStorageand used for all API calls. -
Optional: In Profile → Email Settings, add your Gmail App Password. You can send a test email via the profile UI; backend endpoint
/api/test-emailis also available for debugging. -
Calendar: Create, edit, and delete appointments. Click events to edit; drag-select to create.
-
AI Assistant: Describe what to schedule. The wizard guides you through suggestions → conflict checks → confirmation.
-
Collaboration: From Dashboard/Calendar, open a meeting’s workspace to access whiteboard, shared docs, video, chat, and presence.
-
Admin Panel: Manage users and roles (admin only).
POST /api/auth/registerPOST /api/auth/login
GET /api/users/me(auth) – current profilePUT /api/users/me(auth) – update profile and notification settingsPUT /api/users/me/password(auth)DELETE /api/users/me(auth)GET /api/users(admin)PATCH /api/users/:id/role(admin)DELETE /api/users/:id(admin)
GET /api/appointments(auth)POST /api/appointments(auth)GET /api/appointments/:id(auth)PUT /api/appointments/:id(auth)PATCH /api/appointments/:id/status(auth)PATCH /api/appointments/:id/response(auth)DELETE /api/appointments/:id(auth)
POST /api/ai/parse-natural-language(auth)POST /api/ai/suggest-times(auth)POST /api/ai/detect-conflicts(auth)POST /api/ai/generate-agenda(auth)GET /api/ai/settings|PUT /api/ai/settings(auth)GET /api/ai/conflicts|POST /api/ai/resolve-conflict/:id(auth)
POST /api/collaboration/rooms(auth) – ensure/get roomGET /api/collaboration/rooms/:appointmentId(auth)POST /api/collaboration/documents(auth)GET /api/collaboration/documents/:appointmentId(auth)POST /api/collaboration/whiteboard(auth)GET /api/collaboration/whiteboard/:appointmentId(auth)GET /api/collaboration/chat/:appointmentId(auth)
GET /api/notifications(auth)GET /api/notifications/count(auth)POST /api/notifications/:id/read(auth)POST /api/notifications/read-all(auth)
GET /api/search?q=...(auth)GET /api/stats/dashboard(auth)GET /api/test– health check
WebSockets:
- Socket.IO namespace:
/collab(JWT viaio(..., { auth: { token } })) - Yjs WS:
ws://localhost:5000/collab-sync
- Set
CLIENT_ORIGINto your frontend origin. - Ensure websocket upgrades for both Socket.IO and
/collab-syncthrough your reverse proxy. - Build frontend with
npm run buildand serve behind your chosen web server. - Securely provide
JWT_SECRET,MONGODB_URI, and optionalGROQ_API_KEY.
Backend (backend/package.json):
npm run dev– start with nodemonnpm start– start servernpm test– run backend tests (if present)
Frontend (frontend/package.json):
npm start– start React dev servernpm run build– production buildnpm test– React tests
Pull requests and issues are welcome. For larger changes, please open an issue first to discuss what you’d like to change.
- Fork and create a feature branch
- Write clean, tested code
- Open a PR with a clear description
MIT. See LICENSE.