Serein
Rust로 만든 가볍고 성능 좋은 Discord 전용 네이티브 클라이언트
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A people-first campaign by Pick at Store: share a memory of a neighbourhood
store, pin it to the map of India, and pass the memory on.
• Next.js (App Router, TypeScript, Tailwind CSS), deployed on Vercel while we build
• Firebase: Authentication (Google) and Cloud Firestore, on the free Spark plan
• Cloudinary (free plan) for story photos, private until approved, through src/app/api/photos
• Firebase projects: pas-dev-7786f (dev, default) and pas-prod-c8190 (prod)
Requires Node 22+ and Java 21+ (for the Firebase emulators).README 전문 보기 ↗A people-first campaign by Pick at Store: share a memory of a neighbourhood store, pin it to the map of India, and pass the memory on.
Product and build plan: https://claude.ai/code/artifact/d75832d4-2701-4e44-9837-514ab263cf98
src/app/api/photospas-dev-7786f (dev, default) and pas-prod-c8190 (prod)Requires Node 22+ and Java 21+ (for the Firebase emulators).
npm install
cp .env.example .env.local # fill in the dev web app config
npm run dev # http://localhost:3000
To work fully offline against local Firebase, set
NEXT_PUBLIC_USE_FIREBASE_EMULATORS=true in .env.local and run
npm run emulators in a second terminal (UI at http://localhost:4000).
| Command | What it does |
|---|---|
npm run lint | ESLint |
npm run typecheck | TypeScript, with Next.js route types |
npm run test:rules | Firestore and Storage security rules tests on the emulators |
npm run build | Production build |
All four run in GitHub Actions on every pull request.
Every story waits for a moderator at /moderate before anyone else can see it.
The app can't make anyone a moderator; that is done by hand in the Firebase
console:
/moderate and copies the code it shows.moderators
collection (choose Start collection the first time).name holding their name.Every decision is written to moderationLog, which nobody can edit or delete.
Moderators also see a Reports tab. Anyone signed in can report a memory from its page (or the flag on its Wall card); the memory stays up until a moderator hides it or keeps it. The Approved tab can feature a memory in the Wall's Featured row.
/wall shows every approved memory shared with everyone, and
/memories/<id> shows one memory, including those shared by link only.
Both are built on the server from what an anonymous visitor may read, then
cached, so visitors don't each cost a Firestore read:
src/app/api/wall/refresh).usersPrivate/<uid>/reactions plus a count on
the story that only its author is shown. There are no public counters.firestore.rules and storage.rules deny everything by default (Firebase
Storage is not used). Each build
step opens only what its screens need, and adds tests under tests/rules
proving the rest stays closed. Deploy rules with:
npx firebase deploy --only firestore:rules,storage --project dev
src/lib/post-limits.ts). The count lives in postLimits/<uid>, written
in the same batch as each new story and checked by the rules; /api/photos
checks it too before storing a photo.src/components/cookie-choice.tsx). Sign-in storage is essential.@vercel/analytics), cookieless. Turn
it on in the Vercel project's Analytics tab.src/app/sitemap.ts, src/app/robots.ts, canonical
links and link previews use the production address Vercel reports
(VERCEL_PROJECT_PRODUCTION_URL), so a custom domain needs no code change.
Set NEXT_PUBLIC_SITE_URL only to override it. Test links are never listed.next.config.ts.Google blocks its sign-in page inside apps' web views, so the Pick at Store
app signs in with Google itself and hands the page an ID token
(src/lib/google-sign-in.ts). The contract, web view settings and examples
for React Native, Flutter, Android and iOS are in
docs/pick-at-store-app.md. In other apps'
browsers (Instagram, Facebook) the sign-in pages explain how to open the site
in the phone's browser instead.