-
Notifications
You must be signed in to change notification settings - Fork 0
Getting Started
dbwg2009 edited this page May 4, 2026
·
1 revision
The fastest way to run Noted. No clone required.
curl -O https://raw.githubusercontent.com/dbwg2009/Noted/main/docker-compose.yml
curl -O https://raw.githubusercontent.com/dbwg2009/Noted/main/.env.example
mv .env.example .env| Variable | Required | How to get it |
|---|---|---|
AUTH_SECRET |
Yes | openssl rand -base64 32 |
RESEND_API_KEY |
Yes | resend.com — free tier |
OPENROUTER_API_KEY |
Yes | openrouter.ai — free tier |
CRON_SECRET |
Yes | openssl rand -hex 32 |
EBAY_APP_ID |
No | eBay Developer Portal — enables the product search fallback |
ALLOWED_EMAIL |
No | Restricts registration to one email address |
See Configuration for every variable.
docker compose up -dImages pull from Docker Hub automatically. The migrate service applies the DB schema before the app starts. Open http://localhost:3000.
Go to http://localhost:3000/login and register. If ALLOWED_EMAIL is set, use that address.
git clone https://github.com/dbwg2009/Noted.git && cd Noted
cp .env.example .env # fill in values (leave DATABASE_URL blank — compose sets it)
docker compose up --build -dUse this for fast iteration without rebuilding Docker images.
- Node.js 20+
- A running PostgreSQL instance (local or remote)
git clone https://github.com/dbwg2009/Noted.git && cd Noted
cp .env.example .env.local # fill in DATABASE_URL and all other vars
npm install
npm run db:push # applies the Drizzle schema
npm run dev # starts on http://localhost:3000| Script | What it does |
|---|---|
npm run dev |
Next.js dev server with hot reload |
npm run build |
Production build |
npm run db:push |
Push Drizzle schema to DB (no migration files) |
npm run db:studio |
Drizzle Studio — DB browser at localhost:4983 |
After logging in, find your unique iCal URL at the bottom of the Dashboard. Paste it into:
- Google Calendar → Other calendars → From URL
- Apple Calendar → File → New Calendar Subscription
- Outlook → Add Calendar → From Internet
The URL contains a secret token. Reset it from the Dashboard if it leaks.
Photos are stored via lib/storage.ts. Two strategies, set by STORAGE_STRATEGY:
| Strategy | Where files go | Best for |
|---|---|---|
local (default) |
public/uploads/ on disk |
Docker (use a volume for persistence) |
base64 |
photo_url column as a data URI |
Vercel / serverless |
For Docker, add a volume mount to persist uploads across container restarts:
# docker-compose.yml
services:
app:
volumes:
- uploads:/app/public/uploads
volumes:
uploads: