WallpaperMachine
The wallpapers you love. A new home on your Mac.
Plan group trips together — shared itineraries, lodging, expenses, and RSVPs in one place.
Translation pending
LifestyleTypeScript · JavaScriptGitHub @rmartzOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
A template repository for building Next.js applications with Firebase, deployed on Vercel. Includes opinionated tooling for testing, linting, formatting, component development, and CI/CD.
• Node.js v24+
• pnpm v10+
• A Firebase project with Realtime Database enabled
• A Vercel account (forRead the full README ↗A template repository for building Next.js applications with Firebase, deployed on Vercel. Includes opinionated tooling for testing, linting, formatting, component development, and CI/CD.
| Layer | Technology | Purpose |
|---|---|---|
| Framework | Next.js (App Router) | Fullstack React with SSR/API routes |
| Language | TypeScript (strict mode) | Type safety throughout |
| Package Manager | pnpm | Fast, disk-efficient dependency management |
| UI Components | ShadCN UI + Tailwind CSS | Composable, accessible component primitives |
| State (server) | TanStack Query | Server state caching, polling, invalidation |
| State (client) | Redux Toolkit | Local UI state |
| Database | Firebase Realtime Database | Persistent storage with real-time push |
| Auth | Firebase Admin SDK (server) | Session-based auth via API routes |
| Hosting | Vercel | Deployment, preview URLs, edge functions |
| Testing | Vitest + @testing-library/react | Unit, component, and integration tests |
| Visual Testing | Storybook | Component development and visual documentation |
| CI/CD | GitHub Actions | Lint, format, test, build on every PR |
| Monitoring | Sentry | Error tracking (client + server + edge) |
pnpm install
cp .env.example .env.local
pnpm dev
See .env.example for the full list of required and optional environment variables.
pnpm dev # Start dev server
pnpm build # Production build
pnpm lint # Lint with ESLint
pnpm format # Format with Prettier
pnpm format:check # Check formatting
pnpm test # Run tests with Vitest
pnpm tsc # Type check
pnpm storybook # Start Storybook dev server (port 6006)
pnpm build-storybook # Build static Storybook
pnpm run env:validate # Validate deployment config files against schema (also runs on every commit)
project-root/
├── src/
│ ├── app/ # Next.js App Router pages and API routes
│ ├── components/
│ │ ├── ui/ # ShadCN UI primitives (auto-generated)
│ │ ├── {feature}/ # Feature-specific components with co-located stories and tests
│ │ └── {shared}/ # Shared components
│ ├── lib/
│ │ ├── firebase/ # Firebase Admin + client SDK wrappers
│ │ ├── types/ # Core domain types (barrel-exported)
│ │ └── utils.ts # Shared utility functions
│ ├── server/
│ │ ├── types/ # API response types
│ │ └── utils/ # Server-only helpers
│ ├── services/ # Data access layer (Firebase-backed)
│ ├── hooks/ # Custom React hooks (barrel-exported)
│ ├── store/ # Redux Toolkit slices
│ └── test-setup/ # Vitest setup files
├── deployment/
│ ├── schema.yml # Allowlist schema for public config keys
│ ├── environments.yml # Active environment list
│ ├── preview.yml # Public env config for preview (staging)
│ └── production.yml # Public env config for production
├── scripts/
│ └── validate-config.mjs # Validates deployment YAMLs against schema
├── .storybook/ # Storybook configuration
├── .github/
│ ├── actions/setup/ # Composite action: pnpm + Node.js + install
│ └── workflows/ # CI workflows
├── docs/ # Feature documentation
└── ...config files
.env.examplemain. Preview deployments are label-gated: a preview is built (by .github/workflows/preview-deploy.yml, a caller of the shared rmartz/vercel-preview-ci workflow) only while a PR carries UAT ready, not on every push. vercel.json's git.deploymentEnabled turns off Vercel's own preview buildsPublic, non-secret environment config (Firebase project IDs, Sentry org/project, NEXT_PUBLIC_* keys) lives in deployment/{env}.yml and is validated against deployment/schema.yml on every commit and in CI. Secrets never go in these files.
To change a value, edit the relevant deployment/{env}.yml by hand (only NEXT_PUBLIC_* / allowlisted keys) and run pnpm run env:validate.
Local tooling to push config to Vercel and rotate secrets is being replaced by the planned envctl CLI. The former update-config.sh / deploy-config.sh / rotate-keys.sh helpers were removed when vercel-deploy-scripts (which transitively supplied the vercel CLI they used) was dropped; until envctl lands, push and secret rotation are done manually via the Vercel dashboard/CLI.
CI runs automatically on every PR with four parallel checks: tests, lint, format, and build. See .github/workflows/ci-actions.yml.
Additional workflows:
main@claude mentions in issues and PRs (requires ANTHROPIC_API_KEY secret)MIT