| .github/workflows | ||
| .vscode | ||
| migrations/d1 | ||
| public | ||
| scripts | ||
| src | ||
| types | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| .npmrc | ||
| .prettierignore | ||
| .prettierrc.json | ||
| additional.d.ts | ||
| alchemy.run.ts | ||
| drizzle.config.ts | ||
| eslint.config.mjs | ||
| image-loader.ts | ||
| main-readme-header.png | ||
| mise.toml | ||
| next.config.ts | ||
| open-next.config.ts | ||
| package.json | ||
| pnpm-lock.yaml | ||
| postcss.config.js | ||
| README.md | ||
| shaders.d.ts | ||
| shell.nix | ||
| stamps-readme-header.png | ||
| tsconfig.json | ||
marijanapav.com
Part portfolio, part playground. An evolving space for my design work and ongoing experiments. Built together with my partner @rpavlini, without whom all of this would still live only in Figma :)
This site is forever changing. Expect frequent nitpick commits.
marijanapav.com/stamps
A side project where I reinterpret my grandfather’s stamp collection as a digital one.
It’s part archive, part design study — my own small digital philately album, where I explore the blend of art, history, and typography and bringing it online for a new audience to enjoy.
Visit website
Notes
Published October 2025.
It’s intended as a small archive, a quiet homage, and a place to experiment. I add an occasional new stamp set when I find time to create more.
marijanapav.com/sketchbook
? WIP A space for loose unformed ideas, early tests, and small visual explorations.
Contact
Deployment
This app uses pnpm (see packageManager in package.json). Alchemy deploy must be run as pnpm run deploy — pnpm deploy is a different built-in command.
This app deploys to Cloudflare Workers through Alchemy and OpenNext.
Alchemy provisions the Worker, D1 database, R2 sketch bucket, and Cloudflare Images binding. The
IMAGES binding is required for OpenNext/Cloudflare next/image optimization, so Cloudflare Images
must be enabled on the Cloudflare account before deploying. Production sets NEXT_PUBLIC_IMAGE_EDGE=1,
which switches next/image to image-loader.ts and serves images from edge-cached /cdn-cgi/image
(requires transformations enabled on the zone). Previews and dev use the default loader, so
/_next/image is served by OpenNext through the IMAGES binding, which also works on workers.dev.
Install the Cloudflare deployment dependencies after pulling migration changes:
pnpm install
Run the local Cloudflare dev environment:
pnpm dev
Build and deploy:
pnpm build
pnpm run deploy
Database migrations
D1 schema changes are defined in src/db/schema.ts and generated with Drizzle Kit:
pnpm db:generate
Apply migrations locally:
pnpm db:migrate:local
Apply migrations to Cloudflare:
pnpm db:migrate:remote

