A decentralized music tracking and discovery platform built on AT Protocol 馃幍
rocksky.app
spotify
atproto
lastfm
musicbrainz
scrobbling
listenbrainz
1import dotenv from "dotenv";
2import { cleanEnv, host, port, str } from "envalid";
3
4dotenv.config();
5
6export const env = cleanEnv(process.env, {
7 NODE_ENV: str({
8 default: "development",
9 choices: ["development", "production", "test"],
10 }),
11 HOST: host({ default: "localhost" }),
12 PORT: port({ default: 8000 }),
13 PUBLIC_URL: str({ default: "http://localhost:8000" }),
14 DB_PATH: str({ devDefault: ":memory:" }),
15 KV_DB_PATH: str({ devDefault: ":memory:" }),
16 COOKIE_SECRET: str({ devDefault: "00000000000000000000000000000000" }),
17 FRONTEND_URL: str({ devDefault: "http://localhost:5174" }),
18 JWT_SECRET: str({ devDefault: "00000000000000000000000000000000" }),
19 SPOTIFY_REDIRECT_URI: str({
20 devDefault: "http://localhost:8000/spotify/callback",
21 }),
22 SPOTIFY_CLIENT_ID: str({}),
23 SPOTIFY_CLIENT_SECRET: str({}),
24 SPOTIFY_ENCRYPTION_KEY: str({}),
25 SPOTIFY_ENCRYPTION_IV: str(),
26 ROCKSKY_BETA_TOKEN: str({}),
27 XATA_POSTGRES_URL: str({}),
28 NATS_URL: str({ default: "nats://localhost:4222" }),
29 ANALYTICS: str({ default: "http://localhost:7879" }),
30 DROPBOX_CLIENT_ID: str({}),
31 DROPBOX_CLIENT_SECRET: str({}),
32 DROPBOX_REDIRECT_URI: str({}),
33 GOOGLE_REDIRECT_URI: str({}),
34 GOOGLE_DRIVE: str({ default: "http://localhost:7880" }),
35 DROPBOX: str({ default: "http://localhost:7881" }),
36 TRACKLIST: str({ default: "http://localhost:7884" }),
37 REDIS_URL: str({ default: "redis://localhost:6379" }),
38 MUSICBRAINZ_URL: str({ default: "http://localhost:8088" }),
39 PRIVATE_KEY_1: str({}),
40 PRIVATE_KEY_2: str({}),
41 PRIVATE_KEY_3: str({}),
42 MEILISEARCH_URL: str({ default: "http://localhost:7700" }),
43 MEILISEARCH_API_KEY: str({}),
44 DISABLED_TEALFM: str({ default: "" }),
45});