Marijana Pav's personal website https://marijanapav.com
Find a file
2026-10-12 01:52:39 +02:00
.github/workflows Feat/rework stamps (#29) 2026-10-09 20:28:31 +02:00
.vscode Update packages (#24) 2025-12-06 18:22:48 +01:00
migrations/d1 Cf migration (#26) 2026-06-07 18:13:45 +02:00
public work update (#27) 2026-10-09 23:50:31 +02:00
scripts work update (#27) 2026-10-09 23:50:31 +02:00
src misc webgl photos fixes 2026-10-12 01:52:39 +02:00
types Cf migration (#26) 2026-06-07 18:13:45 +02:00
.dockerignore flyio init 2023-05-27 23:39:34 +02:00
.env.example Cf migration (#26) 2026-06-07 18:13:45 +02:00
.gitignore Cf migration (#26) 2026-06-07 18:13:45 +02:00
.npmrc Feat/rework stamps (#29) 2026-10-09 20:28:31 +02:00
.prettierignore flyio init 2023-05-27 23:39:34 +02:00
.prettierrc.json fix prettier tailwind formatting 2023-07-24 23:07:28 +02:00
additional.d.ts run prettier on codebase 2023-06-24 21:13:15 +02:00
alchemy.run.ts work update (#27) 2026-10-09 23:50:31 +02:00
drizzle.config.ts Cf migration (#26) 2026-06-07 18:13:45 +02:00
eslint.config.mjs Cf migration (#26) 2026-06-07 18:13:45 +02:00
image-loader.ts work update (#27) 2026-10-09 23:50:31 +02:00
main-readme-header.png readme update 2025-12-06 20:13:17 +01:00
mise.toml Feat/stamps (#17) 2025-10-28 23:03:58 +01:00
next.config.ts work update (#27) 2026-10-09 23:50:31 +02:00
open-next.config.ts Cf migration (#26) 2026-06-07 18:13:45 +02:00
package.json work update (#27) 2026-10-09 23:50:31 +02:00
pnpm-lock.yaml work update (#27) 2026-10-09 23:50:31 +02:00
postcss.config.js Update packages (#24) 2025-12-06 18:22:48 +01:00
README.md work update (#27) 2026-10-09 23:50:31 +02:00
shaders.d.ts Feat/stamps (#17) 2025-10-28 23:03:58 +01:00
shell.nix update to node 20 2023-06-24 19:56:04 +02:00
stamps-readme-header.png readme update 2025-12-06 20:13:17 +01:00
tsconfig.json Feat/rework stamps (#29) 2026-10-09 20:28:31 +02:00

Site Header

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.

Site Header

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

marijana@buka.studio

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