Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -223,4 +223,4 @@
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
# CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
# CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
2,179 changes: 1,110 additions & 1,069 deletions analyze/client.html

Large diffs are not rendered by default.

15 changes: 0 additions & 15 deletions docs/prd.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ to focus exclusively on delivering unique business value.
# Core Features

- **Mobile-First Progressive Web App (PWA) Foundation**

- **What it does:** Provides a complete PWA setup, including a Web App
Manifest, a caching Service Worker, and offline fallback pages. The entire
architecture is designed with a mobile-first philosophy.
Expand All @@ -36,7 +35,6 @@ to focus exclusively on delivering unique business value.
stale-while-revalidate for API data) and handle offline states gracefully.

- **Global-Ready Internationalization (i18n)**

- **What it does:** Implements a complete multi-language system supporting
English, Spanish, and Portuguese out-of-the-box, with a clear structure for
adding more languages.
Expand All @@ -48,7 +46,6 @@ to focus exclusively on delivering unique business value.
user locale detection.

- **Comprehensive & Accessible UI System**

- **What it does:** Delivers a complete set of UI components built on
`shadcn/ui` and `Tailwind CSS`. Every component is responsive,
touch-friendly, accessible (WCAG 2.1 AA), and supports dark mode.
Expand All @@ -61,7 +58,6 @@ to focus exclusively on delivering unique business value.
variants.

- **Secure Authentication & Multi-Tenancy**

- **What it does:** Implements a full authentication system (email/password,
OAuth) and a workspace-based multi-tenancy model with data isolation
enforced at the database level.
Expand All @@ -74,7 +70,6 @@ to focus exclusively on delivering unique business value.
access data within their authorized workspace.

- **Type-Safe Full-Stack API**

- **What it does:** Provides a fully-configured, end-to-end type-safe API
layer.
- **Why it's important:** It eliminates an entire class of bugs related to
Expand All @@ -99,15 +94,13 @@ to focus exclusively on delivering unique business value.
# User Experience

- **User Personas**

- **Primary Persona: Alex, the Senior Full-Stack Engineer.** Alex's goal is to
ship high-quality features as quickly as possible. They value clear
patterns, automation, and a boilerplate that "just works" so they can focus
on complex business logic, not on configuration. They expect a top-tier
developer experience with fast builds, hot reloading, and type-safety.

- **Key User Flows**

- **Developer Flow 1: Project Initialization:**
1. Alex clones the boilerplate repository.
2. Runs `pnpm install` to set up dependencies.
Expand Down Expand Up @@ -148,7 +141,6 @@ to focus exclusively on delivering unique business value.
# Technical Architecture

- **System Components**

- **Frontend:** Next.js 15 App Router, React 19, Tailwind CSS.
- **Backend/API:** tRPC running on Next.js API Routes.
- **Database:** PostgreSQL hosted on Supabase.
Expand All @@ -161,13 +153,11 @@ to focus exclusively on delivering unique business value.
- **Hosting:** Vercel.

- **Data Models**

- The core data structure is centered around Users, Workspaces, and
Subscriptions, enabling a standard multi-tenant SaaS model. See Appendix for
the full Prisma schema.

- **APIs and Integrations**

- **Internal API:** A unified, type-safe API is provided via tRPC.
- **External Integrations:**
- **Supabase:** For database, authentication, and file storage.
Expand All @@ -186,7 +176,6 @@ to focus exclusively on delivering unique business value.
# Development Roadmap

- **MVP (v1.0) Requirements: The Production-Ready Foundation**

- **Phase 1: Core Setup & UI Foundation**
- Next.js 15, TypeScript, and Tailwind CSS configuration.
- Basic PWA setup (Manifest, empty Service Worker).
Expand Down Expand Up @@ -345,7 +334,6 @@ to focus exclusively on delivering unique business value.
```

- **Definition of Done (DoD)** A feature is considered "done" when:

- It is implemented and functional.
- It is mobile-first and fully responsive.
- All user-facing strings are internationalized.
Expand Down Expand Up @@ -843,7 +831,6 @@ works-boilerplate/
## 6.1 Phase 1: Foundation + Mobile (5 days)

1. **Initial project setup**

- Next.js 15 with strict TypeScript
- Mobile-first Tailwind configuration
- Basic PWA setup
Expand All @@ -857,7 +844,6 @@ works-boilerplate/
## 6.2 Phase 2: Core Features + Components (6 days)

1. **Component system**

- All shadcn/ui components
- Mobile adaptations
- Touch interactions
Expand All @@ -869,7 +855,6 @@ works-boilerplate/
## 6.3 Phase 3: PWA + Offline (4 days)

1. **Progressive Web App**

- Complete service worker
- Offline strategies
- Install flow
Expand Down
59 changes: 57 additions & 2 deletions messages/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,14 @@
"feedback": "Feedback",
"search": "Search",
"create": "Create",
"favorites": "Favorites"
"favorites": "Favorites",
"notifications": "Notifications",
"menu": "Menu",
"main": "Main",
"account": "Account",
"support": "Support",
"help": "Help",
"logout": "Logout"
},
"actions": {
"save": "Save",
Expand All @@ -49,6 +56,9 @@
"info": "Information"
}
},
"app": {
"name": "Works"
},
"auth": {
"signin": "Sign in",
"signup": "Sign up",
Expand All @@ -62,7 +72,52 @@
"passwordRequired": "Password is required",
"invalidCredentials": "Invalid credentials",
"accountCreated": "Account created successfully",
"welcomeBack": "Welcome back!"
"welcomeBack": "Welcome back!",
"signupPage": {
"title": "Sign up to Copy UI.",
"subtitle": "Already have an account?",
"subtitleLink": "Sign in",
"nameLabel": "Name",
"namePlaceholder": "Your name",
"emailLabel": "Email address",
"emailPlaceholder": "Enter email to get started",
"passwordLabel": "Password",
"passwordPlaceholder": "Enter your password",
"submitButton": "Sign up",
"divider": "Or continue with",
"legalText": "By creating an account you agree with our",
"termsOfService": "Terms of Service",
"and": "and our",
"privacyPolicy": "Privacy Policy"
},
"loginPage": {
"title": "Welcome back!",
"subtitle": "Don't have an account?",
"subtitleLink": "Sign up",
"emailLabel": "Email address",
"emailPlaceholder": "Enter your email",
"passwordLabel": "Password",
"passwordPlaceholder": "Enter your password",
"forgotPasswordLink": "Forgot your password?",
"submitButton": "Sign in",
"divider": "Or continue with"
},
"forgotPasswordPage": {
"title": "Forgot your password?",
"description": "No worries. Enter your email address below and we'll send you a link to reset it.",
"emailLabel": "Email address",
"emailPlaceholder": "your.email@example.com",
"submitButton": "Send reset link",
"backToLogin": "Back to",
"backToLoginLink": "Sign in"
},
"testimonial": {
"author": {
"name": "Peter Mick",
"title": "Founder of Copytime and Tweetsiu"
},
"quote": "CopyUI has been a <highlight>game-changer</highlight> for me! It's incredibly intuitive and has transformed the way I approach design. I can't imagine working without it. 🚀"
}
},
"dashboard": {
"title": "Dashboard",
Expand Down
59 changes: 57 additions & 2 deletions messages/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,14 @@
"feedback": "Comentarios",
"search": "Buscar",
"create": "Crear",
"favorites": "Favoritos"
"favorites": "Favoritos",
"notifications": "Notificaciones",
"menu": "Menú",
"main": "Principal",
"account": "Cuenta",
"support": "Soporte",
"help": "Ayuda",
"logout": "Cerrar sesión"
},
"actions": {
"save": "Guardar",
Expand All @@ -49,6 +56,9 @@
"info": "Información"
}
},
"app": {
"name": "Works"
},
"auth": {
"signin": "Iniciar sesión",
"signup": "Registrarse",
Expand All @@ -62,7 +72,52 @@
"passwordRequired": "La contraseña es obligatoria",
"invalidCredentials": "Credenciales inválidas",
"accountCreated": "Cuenta creada exitosamente",
"welcomeBack": "¡Bienvenido de vuelta!"
"welcomeBack": "¡Bienvenido de vuelta!",
"signupPage": {
"title": "Regístrate en Copy UI.",
"subtitle": "¿Ya tienes una cuenta?",
"subtitleLink": "Iniciar sesión",
"nameLabel": "Nombre",
"namePlaceholder": "Tu nombre",
"emailLabel": "Dirección de correo electrónico",
"emailPlaceholder": "Ingresa tu correo para comenzar",
"passwordLabel": "Contraseña",
"passwordPlaceholder": "Ingresa tu contraseña",
"submitButton": "Registrarse",
"divider": "O continúa con",
"legalText": "Al crear una cuenta aceptas nuestros",
"termsOfService": "Términos de Servicio",
"and": "y nuestra",
"privacyPolicy": "Política de Privacidad"
},
"loginPage": {
"title": "¡Bienvenido de vuelta!",
"subtitle": "¿No tienes una cuenta?",
"subtitleLink": "Regístrate",
"emailLabel": "Dirección de correo electrónico",
"emailPlaceholder": "Ingresa tu correo",
"passwordLabel": "Contraseña",
"passwordPlaceholder": "Ingresa tu contraseña",
"forgotPasswordLink": "¿Olvidaste tu contraseña?",
"submitButton": "Iniciar sesión",
"divider": "O continúa con"
},
"forgotPasswordPage": {
"title": "¿Olvidaste tu contraseña?",
"description": "No te preocupes. Ingresa tu dirección de correo electrónico a continuación y te enviaremos un enlace para restablecerla.",
"emailLabel": "Dirección de correo electrónico",
"emailPlaceholder": "tu.correo@ejemplo.com",
"submitButton": "Enviar enlace de restablecimiento",
"backToLogin": "Volver a",
"backToLoginLink": "Iniciar sesión"
},
"testimonial": {
"author": {
"name": "Peter Mick",
"title": "Fundador de Copytime y Tweetsiu"
},
"quote": "¡CopyUI ha sido un <highlight>cambio radical</highlight> para mí! Es increíblemente intuitivo y ha transformado la forma en que abordo el diseño. No puedo imaginar trabajar sin él. 🚀"
}
},
"dashboard": {
"title": "Panel",
Expand Down
59 changes: 57 additions & 2 deletions messages/pt.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,14 @@
"feedback": "Feedback",
"search": "Buscar",
"create": "Criar",
"favorites": "Favoritos"
"favorites": "Favoritos",
"notifications": "Notificações",
"menu": "Menu",
"main": "Principal",
"account": "Conta",
"support": "Suporte",
"help": "Ajuda",
"logout": "Sair"
},
"actions": {
"save": "Salvar",
Expand All @@ -49,6 +56,9 @@
"info": "Informação"
}
},
"app": {
"name": "Works"
},
"auth": {
"signin": "Entrar",
"signup": "Cadastrar",
Expand All @@ -62,7 +72,52 @@
"passwordRequired": "Senha é obrigatória",
"invalidCredentials": "Credenciais inválidas",
"accountCreated": "Conta criada com sucesso",
"welcomeBack": "Bem-vindo de volta!"
"welcomeBack": "Bem-vindo de volta!",
"signupPage": {
"title": "Cadastre-se no Copy UI.",
"subtitle": "Já tem uma conta?",
"subtitleLink": "Entrar",
"nameLabel": "Nome",
"namePlaceholder": "Seu nome",
"emailLabel": "Endereço de e-mail",
"emailPlaceholder": "Digite o e-mail para começar",
"passwordLabel": "Senha",
"passwordPlaceholder": "Digite sua senha",
"submitButton": "Cadastrar",
"divider": "Ou continue com",
"legalText": "Ao criar uma conta você concorda com nossos",
"termsOfService": "Termos de Serviço",
"and": "e nossa",
"privacyPolicy": "Política de Privacidade"
},
"loginPage": {
"title": "Bem-vindo de volta!",
"subtitle": "Não tem uma conta?",
"subtitleLink": "Cadastre-se",
"emailLabel": "Endereço de e-mail",
"emailPlaceholder": "Digite seu e-mail",
"passwordLabel": "Senha",
"passwordPlaceholder": "Digite sua senha",
"forgotPasswordLink": "Esqueceu sua senha?",
"submitButton": "Entrar",
"divider": "Ou continue com"
},
"forgotPasswordPage": {
"title": "Esqueceu sua senha?",
"description": "Sem problemas. Digite seu endereço de e-mail abaixo e enviaremos um link para redefini-la.",
"emailLabel": "Endereço de e-mail",
"emailPlaceholder": "seu.email@exemplo.com",
"submitButton": "Enviar link de redefinição",
"backToLogin": "Voltar para",
"backToLoginLink": "Entrar"
},
"testimonial": {
"author": {
"name": "Peter Mick",
"title": "Fundador da Copytime e Tweetsiu"
},
"quote": "O CopyUI tem sido um <highlight>divisor de águas</highlight> para mim! É incrivelmente intuitivo e transformou a maneira como abordo o design. Não consigo imaginar trabalhar sem ele. 🚀"
}
},
"dashboard": {
"title": "Painel",
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@
"react-day-picker": "9.7.0",
"react-dom": "19.1.0",
"react-hook-form": "7.59.0",
"react-use-gesture": "9.1.3",
"recharts": "2.15.4",
"sonner": "2.0.5",
"tailwind-merge": "3.3.1",
Expand All @@ -102,13 +101,15 @@
"@sentry/nextjs": "9.33.0",
"@svgr/webpack": "8.1.0",
"@t3-oss/env-nextjs": "0.13.8",
"@tailwindcss/container-queries": "^0.1.1",
"@tailwindcss/postcss": "^4.1.11",
"@types/node": "22.15.34",
"@types/react": "19.1.8",
"@types/react-dom": "19.1.6",
"@types/web": "0.0.243",
"@typescript-eslint/eslint-plugin": "8.35.0",
"@typescript-eslint/parser": "8.35.0",
"@use-gesture/react": "^10.3.1",
"autoprefixer": "10.4.21",
"commitizen": "^4.3.1",
"cssnano": "7.0.7",
Expand Down
Loading