cinetic
코드에서 만든 시네마틱 런치 영상과 모션 디자인을 코딩 에이전트가 연출합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A Next.js app that resizes and compresses large images in the browser, with an optional Supabase library for saving results. Built to deploy on Vercel.
src/lib/compress.ts). Originals are never uploaded.POST /api/uploads, which records the image in the compressions table and returns a signed upload URL. The browser then uploads straight to Supabase Storage, so files never pass through a Vercel function and its 4.5 MB request limit does not apply./library lists saved images through GET /api/library, which returns signed download links that expire after one hour.localStorage. Signed-in people (email and password through Supabase Auth) see the images saved to their account on any device./admin is for accounts with the admin role. It has four tabs:
Access is checked in three places: the middleware sends signed-out visitors to /login, the admin layout checks the role on the server, and every server action checks it again. Admins can not demote, suspend or delete their own account, so there is always at least one admin left.
Create an account at /login, then run this in the Supabase SQL editor:
update public.profiles set role = 'admin' where email = '[email protected]';
After that, promote other people from the Users tab.
When a retention period is set, Vercel Cron calls /api/cron/purge once a day (see vercel.json) and deletes older images. Set CRON_SECRET in Vercel for this to run.
npm install
cp .env.example .env.local # fill in values, or leave empty to run without the library
npm run dev
Without Supabase keys the compressor and downloads still work. The Save button is hidden and the library page explains how to turn it on.
supabase/migrations/ in order in the SQL editor, or supabase db push with the CLI. They create the compressions, profiles and app_settings tables (RLS on everywhere), a private compressed-images storage bucket, a trigger that creates a profile for each new user, and the admin_stats function used by the dashboard..env.local.The service role key is only read on the server (src/lib/supabase-server.ts). The anon key is used in the browser only to upload with a signed URL issued by the server.
NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY and CRON_SECRET under Settings > Environment Variables.The illustrations in public/illustrations are custom SVGs drawn for this project. Swap them for your own photography by replacing the files or the paths in src/app/page.tsx.