analogdotnow/Analog

Meet the calendar that changes everything

TypeScript

1,589

365 commits

updated Sep 18, 2026

See the code

README

Analog

The open source calendar that changes everything

Getting Started

To get Analog up and running on your local machine, follow these steps:

Prerequisites

Ensure you have the following installed:

Setup

  1. Clone the repository:

    git clone https://github.com/analogdotnow/analog.git
    cd analog
    
  2. Install dependencies:

    bun install
    
  3. Configure environment variables: Copy the example environment file:

    cp .env.example .env
    

    Then, open the newly created .env file. You will find default values for DATABASE_URL and BETTER_AUTH_URL. You need to set the following:

    • BETTER_AUTH_SECRET: Generate a secure secret by running openssl rand -hex 32 in your terminal.

  4. Set up Google OAuth:

  1. Set up Microsoft OAuth (optional):
  • MICROSOFT_CLIENT_ID and MICROSOFT_CLIENT_SECRET:
    1. Go to the Microsoft Azure Portal, then navigate to Microsoft Entra ID → App registrations.
    2. Register a new application and set the redirect URI (http://localhost:3000/api/auth/callback/microsoft).
    3. Copy the Application (client) ID and create a new client secret under Certificates & secrets.
    4. Go to API permissions, click + Add a permission, choose Microsoft Graph → Delegated permissions, and add:
      • Calendars.Read, Calendars.ReadWrite, User.Read, offline_access
  1. Set up Google Maps API (optional):

Database Setup

Analog uses PostgreSQL with Drizzle ORM. You can run the database using Docker:

  1. Start the PostgreSQL database container:

    bun run docker:up
    

    This command uses docker-compose.yml to spin up a PostgreSQL container.

  2. Initialize the database: Once the database container is running and healthy, initialize the database:

    bun run db:push
    

Running the Application

After setting up the environment and database, you can start the development server:

bun run dev

The application should now be accessible in your browser at http://localhost:3000.

Tech Stack

  • Web: Next.js, TypeScript, Tailwind v4, Bun, tRPC, TanStack Query, shadcn/ui, Vercel AI SDK
  • Database: Drizzle with PostgreSQL, Redis
  • Authentication: Better Auth

Contributing

Please see CONTRIBUTING.md for details on how to contribute to this project.

calendar

analogdotnow/Analog

Meet the calendar that changes everything

TypeScript

1,589

365 commits

updated Sep 18, 2026

See the code

README

Analog

The open source calendar that changes everything

Getting Started

To get Analog up and running on your local machine, follow these steps:

Prerequisites

Ensure you have the following installed:

Setup

  1. Clone the repository:

    git clone https://github.com/analogdotnow/analog.git
    cd analog
    
  2. Install dependencies:

    bun install
    
  3. Configure environment variables: Copy the example environment file:

    cp .env.example .env
    

    Then, open the newly created .env file. You will find default values for DATABASE_URL and BETTER_AUTH_URL. You need to set the following:

    • BETTER_AUTH_SECRET: Generate a secure secret by running openssl rand -hex 32 in your terminal.

  4. Set up Google OAuth:

  1. Set up Microsoft OAuth (optional):
  • MICROSOFT_CLIENT_ID and MICROSOFT_CLIENT_SECRET:
    1. Go to the Microsoft Azure Portal, then navigate to Microsoft Entra ID → App registrations.
    2. Register a new application and set the redirect URI (http://localhost:3000/api/auth/callback/microsoft).
    3. Copy the Application (client) ID and create a new client secret under Certificates & secrets.
    4. Go to API permissions, click + Add a permission, choose Microsoft Graph → Delegated permissions, and add:
      • Calendars.Read, Calendars.ReadWrite, User.Read, offline_access
  1. Set up Google Maps API (optional):

Database Setup

Analog uses PostgreSQL with Drizzle ORM. You can run the database using Docker:

  1. Start the PostgreSQL database container:

    bun run docker:up
    

    This command uses docker-compose.yml to spin up a PostgreSQL container.

  2. Initialize the database: Once the database container is running and healthy, initialize the database:

    bun run db:push
    

Running the Application

After setting up the environment and database, you can start the development server:

bun run dev

The application should now be accessible in your browser at http://localhost:3000.

Tech Stack

  • Web: Next.js, TypeScript, Tailwind v4, Bun, tRPC, TanStack Query, shadcn/ui, Vercel AI SDK
  • Database: Drizzle with PostgreSQL, Redis
  • Authentication: Better Auth

Contributing

Please see CONTRIBUTING.md for details on how to contribute to this project.

calendar

Significant stargazers

Corbin Crutchley

1,117 followers · starred May 2025

Julius Brussee

2,792 followers · starred Aug 2025

Denys Vitali

541 followers · starred May 2025

Nathan Flurry

625 followers · starred Jun 2025