A proactive AI productivity companion that keeps you ahead of every deadline.
Stack: Node.js 20 · React 19 · TypeScript 5.8 · Tailwind CSS 4 · Google Gemini AI · Cloud Run
Vibe2Ship — India's Biggest Vibe-Coding Hackathon
InLine is a full-stack productivity web app powered by Google Gemini AI. It continuously monitors your task registry, identifies deadline threats, calculates a real-time Safety Index, and dispatches proactive alerts — all without you having to ask.
Scribe, the built-in AI companion, lets you manage tasks conversationally: add, complete, reschedule, and prioritize — all in plain language.
| Feature | Description |
|---|---|
| 🛡️ Proactive Defense | Real-time Safety Index (0–100) that tracks deadline risk, overdue tasks, and burnout load |
| 📋 Task Registry | Full task board with priorities, categories, energy levels, statuses, and edit/delete/reminder support |
| 📅 Timeline | AI-generated daily schedule that reorders tasks by urgency and inserts mindfulness breaks |
| 🤖 Scribe AI Advisor | Conversational AI chat that can add, complete, and update tasks directly from natural language |
| 📊 Analytics | Progress charts, pacing safety index, completion rate, and energy distribution insights |
| ⏱️ Deep Work Timer | Pomodoro-style focus timer with work/break/long break presets and active task lock-in |
| 🔔 Smart Reminders | Browser push notifications for scheduled task reminders |
| 🚨 Alert Hub | Proactive safeguard cards with one-click action buttons (Reschedule, Promote, Inject Break) |
- React 19 + TypeScript — component UI
- Tailwind CSS v4 — utility-first styling
- Framer Motion (via
motion) — animations and transitions - Lucide React — icons
- Vite 6 — dev server and bundler
- Node.js + Express — REST API server
- Google Gemini AI (
@google/genai) — AI analysis and chat - Helmet — HTTP security headers
- express-rate-limit — DoS and abuse protection
- tsx — TypeScript execution in dev
- Google Cloud Run — serverless container hosting
- Docker — containerised production build
- Vite (SSR middleware mode) — dev hot reload via Express
.
├── src/
│ ├── App.tsx # Root app, state management, routing
│ ├── types.ts # Shared TypeScript interfaces
│ ├── index.css # Global styles
│ ├── main.tsx # React entry point
│ └── components/
│ ├── ScoreDial.tsx # Proactive Defense / Safety Index widget
│ ├── AlertHub.tsx # Proactive safeguard alert cards
│ ├── TaskBoard.tsx # Task registry board
│ ├── Timeline.tsx # AI-generated daily schedule
│ ├── CoachChat.tsx # Scribe AI chat interface
│ ├── FocusTimer.tsx # Deep work / Pomodoro timer
│ └── ProgressAnalytics.tsx # Charts and analytics
├── server.ts # Express backend + Gemini API integration
├── Dockerfile # Multi-stage production Docker build
├── vite.config.ts # Vite configuration
├── tsconfig.json # TypeScript config
└── package.json
- Node.js 20+
- A Google Gemini API key (optional — the app runs in offline heuristic mode without it)
npm installCopy the example env file and add your API key:
cp .env.example .envEdit .env:
GEMINI_API_KEY=your_gemini_api_key_hereNote: The app works without a key — Scribe runs in Offline Fallback Mode using local heuristics. Full AI coaching requires a valid Gemini API key.
npm run devOpen http://localhost:3000.
| Command | Description |
|---|---|
npm run dev |
Start local dev server with hot reload (Vite + Express) |
npm run build |
Build Vite frontend + bundle Express server for production |
npm start |
Start production server from built dist/ |
npm run lint |
Run TypeScript type checking |
npm run clean |
Remove build artifacts |
All endpoints are prefixed with /api.
Returns server and AI configuration status.
{ "status": "ok", "aiConfigured": true }Triggers AI-powered task prioritization, schedule generation, and proactive alert creation.
Body:
{
"tasks": [...],
"currentTime": "string",
"userFocusGoal": "string"
}Sends a conversational message to Scribe AI. Returns a reply and optional task mutation operations.
Body:
{
"messages": [...],
"tasks": [...],
"currentTime": "string"
}Rate limits: General API — 100 req / 15 min. AI endpoints — 20 req / 15 min.
InLine implements the following production security measures:
- Helmet.js — sets
X-Frame-Options,X-Content-Type-Options,Strict-Transport-Security,X-XSS-Protection, and Content Security Policy headers - Rate limiting — 100 req/15 min general, 20 req/15 min on AI endpoints
- Body size cap — 100kb max request payload
- Input validation — all API inputs validated and sanitized before processing
- Sanitized errors — internal error details never exposed to clients; logged server-side only
Vibe2Ship — India's Biggest Vibe-Coding Hackathon (Online Edition)
InLine was designed and shipped end-to-end during Vibe2Ship, showcasing how AI-assisted vibe-coding can take a product from zero to a fully deployed, production-ready application — complete with a Gemini-powered AI companion, real-time safety scoring, and Cloud Run deployment.
Apache 2.0 — see LICENSE for details.