The open source calendar that changes everything
To get Analog up and running on your local machine, follow these steps:
Ensure you have the following installed:
- Bun: A fast JavaScript runtime, package manager, bundler, and test runner.
- Docker Desktop: For running the PostgreSQL database.
-
Clone the repository:
git clone https://github.com/analogdotnow/analog.git cd analog -
Install dependencies:
bun install
-
Configure environment variables: Copy the example environment file:
cp .env.example .env
Then, open the newly created
.envfile. You will find default values forDATABASE_URLandBETTER_AUTH_URL. You need to set the following:BETTER_AUTH_SECRET: Generate a secure secret by runningopenssl rand -hex 32in your terminal.
-
Set up Google OAuth:
GOOGLE_CLIENT_IDandGOOGLE_CLIENT_SECRET:- Create a Google project in the Google Cloud Console.
- Follow step 1 in the Better Auth documentation to set up Google OAuth credentials.
- Enable the Google Calendar API by visiting Google Cloud Console APIs and enabling it for your project.
- Add yourself as test user:
- Locate the Google OAuth
Audiencetab. - Under 'Test users', click on 'Add Users'.
- Add your email(s) in the textbox and click on 'Save'.
- Locate the Google OAuth
- Set up Microsoft OAuth (optional):
MICROSOFT_CLIENT_IDandMICROSOFT_CLIENT_SECRET:- Go to the Microsoft Azure Portal, then navigate to Microsoft Entra ID → App registrations.
- Register a new application and set the redirect URI (
http://localhost:3000/api/auth/callback/microsoft). - Copy the Application (client) ID and create a new client secret under Certificates & secrets.
- Go to API permissions, click + Add a permission, choose Microsoft Graph → Delegated permissions, and add:
Calendars.Read,Calendars.ReadWrite,User.Read,offline_access
- Set up Google Places API:
GOOGLE_MAPS_API_KEY:- In your existing Google Cloud project (or create a new one), enable the Places API (New) by visiting Google Cloud API Library.
- Create an API key in Google Cloud Maps Platform Credentials.
- Set the API key as
GOOGLE_MAPS_API_KEYin your.envfile.
Analog uses PostgreSQL with Drizzle ORM. You can run the database using Docker:
-
Start the PostgreSQL database container:
bun run docker:up
This command uses
docker-compose.ymlto spin up a PostgreSQL container. -
Initialize the database: Once the database container is running and healthy, initialize the database:
bun run db:push
After setting up the environment and database, you can start the development server:
bun run devThe application should now be accessible in your browser at http://localhost:3000.
- Web: Next.js, TypeScript, Tailwind v4, Bun, tRPC, TanStack Query, shadcn/ui
- Database: Drizzle with PostgreSQL
- Authentication: Better Auth for Google OAuth
WIP.
Please see CONTRIBUTING.md for details on how to contribute to this project.