AI-powered time logging for consultants. Aggregates your day hour-by-hour from Google, Slack, Trello, GitHub, Jira, and HubSpot — then uses AI to generate ready-to-submit time entries mapped to your projects in Milient/Moment.
Built with Next.js 14, shadcn/ui, Tailwind CSS, and Google Gemini. No database. Supports dark mode.
- Aggregates your day — fetches activity from up to 8 sources (Calendar, Gmail, Docs, Slack, Trello, GitHub, Jira, HubSpot) and lays it out hour by hour.
- Generates time entries — sends your activities + project context from Milient to Gemini, which returns structured time log suggestions with hours and descriptions.
- Submits to Milient — you review, edit, and submit. Time lock enforcement is handled server-side.
npm install
cp .env.example .env.local # Fill in your credentials
npm run dev # Open http://localhost:3000# NextAuth
NEXTAUTH_URL=https://your-app.vercel.app
NEXTAUTH_SECRET=generate-a-random-secret
# Google OAuth (Calendar, Gmail, Drive Activity)
GOOGLE_CLIENT_ID=...
GOOGLE_CLIENT_SECRET=...
# Slack OAuth
SLACK_CLIENT_ID=...
SLACK_CLIENT_SECRET=...
# Trello
TRELLO_API_KEY=...
TRELLO_APP_NAME=Worklog
# GitHub OAuth
GITHUB_CLIENT_ID=...
GITHUB_CLIENT_SECRET=...
# Jira Cloud OAuth
JIRA_CLIENT_ID=...
JIRA_CLIENT_SECRET=...
# HubSpot OAuth
HUBSPOT_CLIENT_ID=...
HUBSPOT_CLIENT_SECRET=...
# Milient/Moment (time tracking)
MILIENT_API_KEY=...
MILIENT_COMPANY_CODE=...
# Gemini (AI suggestions)
GEMINI_API_KEY=...
- Create a project at console.cloud.google.com
- Enable: Gmail API, Google Calendar API, Drive Activity API, Google Drive API
- Configure OAuth consent screen (add test users if in testing mode)
- Create OAuth credentials (Web application)
- Redirect URI:
https://your-app.vercel.app/api/auth/callback/google
- Redirect URI:
- Create an app at api.slack.com/apps
- Under OAuth & Permissions, add User Token Scopes:
search:read,users:read,im:read - Add redirect URL:
https://your-app.vercel.app/api/auth/slack/callback
Nice to have — local dev HTTPS: Slack requires HTTPS redirect URIs and won't accept
http://localhost. To develop locally with Slack OAuth, runnext dev --experimental-https(Next.js 14 generates a local cert automatically), setNEXTAUTH_URL=https://localhost:3000in.env.local, and addhttps://localhost:3000/api/auth/slack/callbackas an additional redirect URL in Slack. Optionally installmkcert(brew install mkcert && mkcert -install) to avoid browser cert warnings.
- Get your API key at trello.com/power-ups/admin
- Add redirect URL:
https://your-app.vercel.app/api/auth/trello/callback
- Create an OAuth App at github.com/settings/developers
- Set callback URL:
https://your-app.vercel.app/api/auth/github/callback - Request scopes:
repo,read:user
- Create an OAuth 2.0 app at developer.atlassian.com
- Add callback URL:
https://your-app.vercel.app/api/auth/jira/callback - Add scopes:
read:jira-user,read:jira-work
HubSpot requires a developer app created via the HubSpot CLI:
npm install -g @hubspot/cli@latest
hs account auth
hs project create --name worklog-app --dest /tmp/hubspot-app --project-base app --distribution private --auth oauthEdit src/app/app-hsmeta.json — set scope to crm.objects.deals.read and add redirect URLs:
https://your-app.vercel.app/api/auth/hubspot/callbackhttps://localhost:3000/api/auth/hubspot/callback
Then upload and get credentials:
hs project upload
hs project open # → Auth tab → copy Client ID and Client secretMilient is a time management platform used by Norwegian consulting firms. The app resolves your Milient user from your Google sign-in email — no separate login needed.
- Get your API key and company code from your Milient administrator.
- Add them as
MILIENT_API_KEYandMILIENT_COMPANY_CODE.
- Push to GitHub
- Import the project at vercel.com
- Add all environment variables (set
NEXTAUTH_URLto your Vercel domain) - Deploy
- Update all OAuth redirect URIs to your Vercel domain
| Framework | Next.js 14 (App Router) |
| Auth | NextAuth.js v5 (JWT, no database) |
| UI | shadcn/ui + Tailwind CSS v4 |
| AI | Google Gemini 2.5 Flash Lite |
| Time tracking | Milient / Moment |
| Icons | Lucide React |
| Hosting | Vercel |