ai-startup-skills
AI 제품을 만드는 스타트업을 위한 7단계 에이전트 스킬: 검증 → 비즈플랜 → 정책 → 로드쇼 → 고객 확보 → 가격 책정 → 등록
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Alius stempel produkt
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Det digitale loyalitetskort i Apple Wallet: stempler, henvisninger, tilbud og beskeder. Live på kort.folka.dk.
Butikken styrer alt fra et dashboard på telefonen. Kunden scanner en QR-kode, skriver navn og e-mail og har kortet i Wallet. Kunder logger aldrig ind.
Installer afhængigheder:
npm install
Opret .env.local ud fra .env.example og udfyld:
cp .env.example .env.local
Som minimum for lokal udvikling skal du bruge:
DATABASE_URL og DIRECT_URL (Neon Postgres)AUTH_SECRET (lav en: openssl rand -base64 32)AUTH_RESEND_KEY og EMAIL_FROM (login-mails)UPSTASH_REDIS_REST_URL og UPSTASH_REDIS_REST_TOKEN (stempler kræver Redis)NEXT_PUBLIC_APP_URL (fx http://localhost:3000)WALLET_ENABLED kan blive false. Alt virker uden Apple Wallet via webkortet.
Opret databaseskema og seed demo-data:
npm run db:migrate # første gang: opretter tabeller
npm run db:seed # opretter "Demo Kaffebar" med liv i data
Seed laver en demo-butik med data og en personale-PIN 1234.
Start udviklingsserveren:
npm run dev
//start/login/app/k/demo-kaffebar/k/[slug]), får et CustomerCard med et unikt serial og en device-cookie, så samme telefon altid rammer samme kort. Webkortet ligger på /kort/[serial] og kan føjes til hjemmeskærmen (PWA)./app/kasse) viser en roterende QR med et signeret engangs-token (JWT, 60 sek.). Kundens kamera rammer /s/[token], som validerer, bruger jti een gang (replay umuligt via Redis), tjekker cooldown, lægger evt. kampagne-multiplier på og skriver stemplet.FLAGGED i audit-loggen og vises i dashboardet.Push repoet til GitHub og importer det i Vercel.
Sæt alle miljøvariabler fra .env.example i Vercel (Production + Preview). Husk at NEXT_PUBLIC_APP_URL skal være det rigtige domæne (https://kort.folka.dk).
Neon: brug den poolede connection string som DATABASE_URL og den direkte som DIRECT_URL.
Build-kommandoen er prisma generate && next build (allerede sat i package.json). Kør migrationer mod produktion:
npx prisma migrate deploy
Resend: verificer afsenderdomænet, så magic links kan sendes.
Alt Wallet-relateret er bygget, men gated bag WALLET_ENABLED. Når din Apple Developer-konto er klar:
Opret et Pass Type ID i Apple Developer (Certificates, Identifiers & Profiles -> Identifiers -> Pass Type IDs), fx pass.dk.alius.stemplet. Sæt det som APPLE_PASS_TYPE_ID.
Generer et pass-certifikat for det Pass Type ID og hent det. Eksporter certifikat + privat nøgle fra Nøglering som en .p12.
Lav en PEM af .p12 (indeholder både certifikat og nøgle):
openssl pkcs12 -in Certificates.p12 -out pass.pem -nodes
base64 -i pass.pem | tr -d '\n' > pass.pem.b64
Indholdet af pass.pem.b64 bliver APPLE_PASS_CERT. Hvis nøglen har adgangskode, sæt den i APPLE_PASS_CERT_PASSWORD.
Hent Apples WWDR-certifikat (Worldwide Developer Relations), konverter til PEM og base64:
openssl x509 -inform der -in AppleWWDRCAG4.cer -out wwdr.pem
base64 -i wwdr.pem | tr -d '\n' > wwdr.pem.b64
Indholdet bliver APPLE_WWDR_CERT.
Team ID: dit 10-tegns Apple Team ID -> APPLE_TEAM_ID.
APNs-nøgle til live pass-opdateringer: opret en Auth Key (.p8) med APNs aktiveret. Base64-encode den til APNS_KEY, og sæt APNS_KEY_ID (nøglens 10-tegns id):
base64 -i AuthKey_XXXXXX.p8 | tr -d '\n' > apns.p8.b64
Slå flaget til: sæt WALLET_ENABLED="true" og redeploy.
Når flaget er slået fra, viser kundens onboarding kun webkortet. Når det slås til, vises "Læg i Apple Wallet" som primær mulighed, og webkortet bliver et link. Ved hvert stempel og hver indløsning sender serveren en APNs-push, så passet opdaterer sig live i Wallet.
En side, der forklarer personalet præcis, hvordan stempling og indløsning virker:
/app/guide)./guide/<slug>, som ejeren kan sende eller lave en QR til, uden at give dashboard-login. Den viser aldrig følsomme data (ingen PIN, nøgler eller kundedata).@media print i globals.css).Én sandhedskilde. Guiden må aldrig indeholde hardcodede systemværdier. Alle faste tal (kodens levetid, standard-cooldown, PIN-låsning, min/max stempler) bor i src/lib/system-config.ts, som både stempel-motoren og guiden importerer fra. Butiksspecifikke værdier (cooldown, antal stempler, belønning, kampagner, Wallet til/fra) hentes live fra databasen via src/lib/guide.ts og renderes server-side.
Vedligehold: Når stempel-motorens adfærd ændres, skal src/lib/system-config.ts og guide-teksten i src/components/guide/GuideContent.tsx gennemgås i samme PR. npm test indeholder en test, der fejler, hvis guiden renderer uden værdierne fra system-config (fx at cooldown-teksten matcher den konfigurerede værdi).
| Kommando | Hvad |
|---|---|
npm run dev | Udviklingsserver |
npm run build | prisma generate + produktion-build |
npm test | Kør tests (sikkerhed + personale-guide) |
npm run db:migrate | Prisma-migration (dev) |
npm run db:seed | Seed demo-data |
npm run db:studio | Prisma Studio |
npm run lint | ESLint |
Et produkt fra Alius.