MCPcopy Create free account
hub / github.com/analogdotnow/Analog

github.com/analogdotnow/Analog @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
4,114 symbols 8,611 edges 916 files 70 documented · 2% updated 21d ago★ 1,5863 open issues

Browse by type

Functions 2,565 Types & classes 1,549
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Analog

The open source calendar that changes everything

Vercel OSS Program

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:

    bash git clone https://github.com/analogdotnow/analog.git cd analog

  2. Install dependencies:

    bash bun install

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

    bash 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:

  5. GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET:

  6. Create a Google project in the Google Cloud Console.
  7. Follow step 1 in the Better Auth documentation to set up Google OAuth credentials.
  8. Enable the Google Calendar API by visiting Google Cloud Console APIs and enabling it for your project.
  9. Add yourself as test user:

    • Locate the Google OAuth Audience tab.
    • Under 'Test users', click on 'Add Users'.
    • Add your email(s) in the textbox and click on 'Save'.
  10. Set up Microsoft OAuth (optional):

  11. MICROSOFT_CLIENT_ID and MICROSOFT_CLIENT_SECRET:

  12. Go to the Microsoft Azure Portal, then navigate to Microsoft Entra ID → App registrations.
  13. Register a new application and set the redirect URI (http://localhost:3000/api/auth/callback/microsoft).
  14. Copy the Application (client) ID and create a new client secret under Certificates & secrets.
  15. Go to API permissions, click + Add a permission, choose Microsoft Graph → Delegated permissions, and add:

    • Calendars.Read, Calendars.ReadWrite, User.Read, offline_access
  16. Set up Google Maps API (optional):

  17. GOOGLE_MAPS_API_KEY:

  18. In your existing Google Cloud project (or create a new one), enable the Places API (New) by visiting Google Cloud API Library.
  19. Create an API key in Google Cloud Maps Platform Credentials.
  20. Set the API key as GOOGLE_MAPS_API_KEY in your .env file.

Database Setup

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

  1. Start the PostgreSQL database container:

    bash 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: bash 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.

Extension points exported contracts — how you extend this code

browse all types & interfaces →

Core symbols most depended-on inside this repo

browse all functions →

Shape

Function 1,857
Interface 1,137
Method 708
Class 412

Languages

TypeScript100%

Modules by API surface

packages/google-people/src/interfaces.ts72 symbols
packages/microsoft-calendar/src/error.ts51 symbols
packages/google-calendar/src/error.ts51 symbols
packages/google-people/src/error.ts48 symbols
apps/web/src/store/hooks/index.ts43 symbols
packages/microsoft-calendar/src/interfaces.ts42 symbols
packages/google-maps-places/src/resources/places/places.ts40 symbols
packages/google-maps-routes/src/resources/directions.ts35 symbols
packages/providers/src/interfaces/providers/calendar.ts33 symbols
packages/google-tasks/src/core/error.ts32 symbols
packages/google-maps-routes/src/core/error.ts32 symbols
packages/google-maps-places/src/core/error.ts32 symbols

For agents

$ claude mcp add Analog \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page