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
.env
file. You will find default values forDATABASE_URL
andBETTER_AUTH_URL
. You need to set the following:BETTER_AUTH_SECRET
: Generate a secure secret by runningopenssl rand -hex 32
in your terminal.
-
Set up Google OAuth:
GOOGLE_CLIENT_ID
andGOOGLE_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
Audience
tab. - 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_ID
andMICROSOFT_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_KEY
in your.env
file.
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.yml
to 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 dev
The 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.