A full-stack calendar management app built with Next.js — scheduling, authentication, guest access, and experimental AI-assisted time-slot prediction in one workflow.
Table of Contents
Collaboration: Calendify is a joint project by Tony Brierly and Will Channing.
Calendify is a full-stack calendar management app that combines scheduling, authentication, guest access, and account preferences into a single workflow. It pairs a polished calendar UI with a complete auth system (credentials + OAuth, email verification, and password reset) and supports a guest user flow for quick, no-signup access.
It also serves as a platform to experiment with AI-assisted scheduling: an experimental prediction action loads a TensorFlow.js model to suggest time slots. The companion training repo for that model lives at calendify-ai.
Core features include:
- User authentication with email/password and OAuth (GitHub, Google), email verification, and password reset
- Guest user flow with an authenticated cron endpoint that cleans up stale guest accounts
- Protected calendar area at
/calendarwith day, week, and month views - Event data persisted in PostgreSQL via Prisma, with
EventandPart(time-segment) models - User preferences (
earliestandlatest) that feed scheduling logic - Experimental TensorFlow.js prediction action for suggested time slots
NOTE: This is a personal project, but it is freely available if any part of it is useful to you. To get a local copy up and running, follow these steps:
Node and NPM are required.
npm install npm@latest -gA reachable PostgreSQL database is also required.
- Clone the repo
git clone https://github.com/tonyb650/calendify-app.git
- Install packages with
npmcd calendify-app && npm install
- Create a
.envfile in the project root and populate the following variables:DATABASE_URL="postgresql://USER:PASSWORD@HOST:PORT/DB_NAME?schema=public" AUTH_URL="http://localhost:3000" GITHUB_CLIENT_ID="" GITHUB_CLIENT_SECRET="" GOOGLE_CLIENT_ID="" GOOGLE_CLIENT_SECRET="" RESEND_API_KEY="" CRON_SECRET="replace-with-a-long-random-secret"
DATABASE_URLis required by Prisma.AUTH_URLis used when generating verification/reset email links.CRON_SECRETis required to authorize calls toGET /api/cron.
- Change git remote url to avoid accidental pushes to base project
git remote set-url origin github_username/repo_name git remote -v # confirm the changes - Prepare the database
npx prisma migrate dev
prisma generatealso runs automatically duringpostinstall. - Run the application
Open http://localhost:3000.
npm run dev
After signing in (or continuing as a guest), users land on the protected calendar area at /calendar, where events can be browsed in day, week, or month views and new events can be scheduled inline.
npm run dev- Start the development servernpm run build- Build for productionnpm run start- Start the production servernpm run lint- Run ESLint
- Endpoint:
GET /api/cron - Auth:
Authorization: Bearer <CRON_SECRET> - Purpose: Deletes guest users older than the configured cutoff in server logic.
Example:
curl -H "Authorization: Bearer $CRON_SECRET" http://localhost:3000/api/cron- The repository includes
vercel.json, so Vercel deployment is expected. - Set all required environment variables in your deployment platform.
- Ensure PostgreSQL is reachable from the deployment environment.
- If using the prediction feature in production, host the TensorFlow model files under
/public/models.
- Harden the experimental TensorFlow.js prediction action for production use
- Expand scheduling logic around user preferences (
earliest/latest) - Additional calendar views and event-type customization
- Improved guest-to-registered-user conversion flow
Distributed under the Unlicense License. See LICENSE.txt for more information.
Calendify is built and maintained by:
Tony Brierly
Will Channing
Companion AI training repo: calendify-ai




