Skip to content

Repository files navigation

Calendify


Logo

Calendify

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
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. License
  6. Contact
  7. Acknowledgments

About The Project

Landing Page Screen Shot

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 /calendar with day, week, and month views
  • Event data persisted in PostgreSQL via Prisma, with Event and Part (time-segment) models
  • User preferences (earliest and latest) that feed scheduling logic
  • Experimental TensorFlow.js prediction action for suggested time slots

(back to top)

Built With

NextJS
React
TypeScript
TailwindCSS
Prisma
PostgreSQL
NextAuth
TensorFlow

(back to top)

Getting Started

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:

Prerequisites

Node and NPM are required.

npm install npm@latest -g

A reachable PostgreSQL database is also required.

Installation

  1. Clone the repo
    git clone https://github.com/tonyb650/calendify-app.git
  2. Install packages with npm
    cd calendify-app && npm install
  3. Create a .env file 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_URL is required by Prisma.
    • AUTH_URL is used when generating verification/reset email links.
    • CRON_SECRET is required to authorize calls to GET /api/cron.
  4. 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
  5. Prepare the database
    npx prisma migrate dev
    prisma generate also runs automatically during postinstall.
  6. Run the application
    npm run dev
    Open http://localhost:3000.

(back to top)

Usage

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.

Register / Login

Register Screen Shot

Daily View

Daily View Screen Shot

Weekly View

Weekly View Screen Shot

Creating a New Event

New Event Screen Shot

Available Scripts

  • npm run dev - Start the development server
  • npm run build - Build for production
  • npm run start - Start the production server
  • npm run lint - Run ESLint

Cron Cleanup Endpoint

  • 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

Deployment Notes

  • 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.

(back to top)

Roadmap

  • 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

(back to top)

License

Distributed under the Unlicense License. See LICENSE.txt for more information.

(back to top)

Contact

Calendify is built and maintained by:

Tony Brierly

LinkedIn

Will Channing

LinkedIn

Companion AI training repo: calendify-ai

(back to top)

Acknowledgments

(back to top)

About

Using a custom TensorFlow model to optimize your calendar.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages