Awesome-omni-skill seeksaas-development
Complete SeekSaaS development guide covering project setup, workflows, conventions, and best practices
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/development/seeksaas-development" ~/.claude/skills/diegosouzapw-awesome-omni-skill-seeksaas-development && rm -rf "$T"
manifest:
skills/development/seeksaas-development/SKILL.mdsource content
SeekSaaS Development Guide
Project Overview
SeekSaaS is a production-ready full-stack SaaS starter template built with:
- Frontend: React 19 + React Router v7 + Vite 7
- Backend: Hono + Drizzle ORM + PostgreSQL
- Deployment: Cloudflare Workers + Pages
- Styling: Tailwind CSS v4 + Shadcn UI
- Type Safety: Full-stack TypeScript
Monorepo Architecture
SeekSaaS uses a monorepo with pnpm workspaces and Turbo for efficient development:
seeksaas-www-react-router-v7/ ├── apps/ # Deployable applications (web) ├── packages/ # Reusable libraries (30+ packages) ├── features/ # Feature modules (ai, auth, cms, mkt, panel, shared) ├── apis/ # API layer (api, api-client, api-services, etc.) ├── auths/ # Authentication (auth, auth-shared, session) ├── database/ # Database (db, dal) ├── mails/ # Email services (mail, mail-templates) ├── payments/ # Payment services (payment, plans) ├── newsletters/ # Newsletter (newsletter, mail-newsletter) ├── configs/ # Configuration (config, env) ├── tools/ # Dev tools (seed, typescript-config) └── pnpm-workspace.yaml
Development Workflow
Getting Started
- Clone and Install
git clone <repository-url> cd seeksaas-www-react-router-v7 pnpm install
- Environment Setup
cp apps/web/.env.example apps/web/.env # Edit apps/web/.env with your configuration
- Database Setup
pnpm db:generate # Generate migrations pnpm db:migrate # Run migrations pnpm db:studio # Open Drizzle Studio (optional)
- Start Development
pnpm dev # Start all services pnpm dev:web # Start web app only
Common Commands
# Development pnpm dev # Start development server pnpm dev:web # Start web app only # Building pnpm build # Build all packages pnpm check-types # Type checking # Code Quality pnpm lint # Run linter pnpm format # Format code pnpm check # Check code quality # Database pnpm db:generate # Generate migrations from schema pnpm db:migrate # Apply migrations pnpm db:push # Push schema changes (dev only) pnpm db:studio # Open database studio pnpm seed # Seed database # Deployment pnpm cf:preview:web # Preview on Cloudflare pnpm cf:deploy:web # Deploy to Cloudflare pnpm mail:preview # Preview email templates # Email pnpm mail:preview # Preview email templates in browser
Code Conventions
TypeScript
- Use strict mode TypeScript
- Prefer explicit types over
any - Use interfaces for object shapes, types for unions/primitives
- Export types with
when possibleexport type
React
- Use functional components with hooks
- Prefer named exports over default exports
- Use TypeScript for component props
- Follow the composition pattern
File Naming
- Components:
(e.g.,PascalCase.tsx
)UserProfile.tsx - Utilities:
(e.g.,camelCase.ts
)formatDate.ts - Constants:
(e.g.,UPPER_SNAKE_CASE.ts
)API_ROUTES.ts - Types:
orPascalCase.ts*.types.ts - Tests:
or*.test.ts*.spec.ts
Package Dependencies
- Use workspace protocol:
"@workspace/package-name": "workspace:*" - Use catalog protocol for shared dependencies:
"package-name": "catalog:" - Follow unidirectional dependencies to avoid cycles
Architecture Layers
┌─────────────────────────────────────┐ │ Application Layer (apps/web) │ └──────────────┬──────────────────────┘ │ ┌──────────────▼──────────────────────┐ │ UI Component Layer │ │ (packages/ui, features/*) │ └──────────────┬──────────────────────┘ │ ┌──────────────▼──────────────────────┐ │ API Layer │ │ (apis/api, apis/api-client) │ └──────────────┬──────────────────────┘ │ ┌──────────────▼──────────────────────┐ │ Service Layer │ │ (apis/api-services) │ └──────────────┬──────────────────────┘ │ ┌──────────────▼──────────────────────┐ │ Data Layer │ │ (database/db) │ └─────────────────────────────────────┘
Key Technologies
Frontend Stack
- React 19 - Latest React with concurrent features
- React Router v7 - File-system routing with data loading
- Vite 7 - Fast build tool with HMR
- Tailwind CSS v4 - Utility-first CSS
- Shadcn UI - Accessible component primitives
Backend Stack
- Hono - Lightweight web framework for edge computing
- Cloudflare Workers - Serverless deployment
- Drizzle ORM - Type-safe database ORM
- PostgreSQL - Relational database (Neon)
- Better Auth - Authentication solution
Developer Tools
- TypeScript - Type safety
- Biome - Linting and formatting (replaces ESLint + Prettier)
- Turbo - Monorepo build system
- pnpm - Package manager with workspace support
- Husky - Git hooks
- lint-staged - Pre-commit checks
Feature Modules
Core Features
- Authentication (
) - Login, signup, password resetfeatures/auth - CMS (
) - Content management systemfeatures/cms - Marketing (
) - Landing pages, about, contactfeatures/mkt - Panel (
) - User dashboard and admin panelfeatures/panel - AI (
) - AI features (chat, image generation)features/ai - Shared (
) - Shared components (Logo, background, 404)features/shared
Integration Modules
- Payments (
) - Stripe integration, plan managementpayments/* - Email (
) - Email service with Resendmails/* - Newsletter (
) - Newsletter subscriptionnewsletters/* - Storage (
) - S3/R2 storagepackages/storage
Environment Variables
Required Variables
# Database DATABASE_URL=postgresql://user:password@host:port/db # Authentication BETTER_AUTH_SECRET=your-secret-key BETTER_AUTH_URL=http://localhost:5173 # Optional Services OPENAI_API_KEY=sk-xxx # AI features RESEND_API_KEY=re_xxx # Email STRIPE_PK=pk_test_xxx # Payments STRIPE_SK=sk_test_xxx
Environment Files
- Development:
apps/web/.env - Production: Set in Cloudflare Pages/Workers
Testing
Unit Tests
# Run tests in a specific package pnpm test --filter <package-name>
E2E Tests
pnpm e2e
Best Practices
Component Development
- Keep components small and focused
- Use composition over inheritance
- Implement proper error boundaries
- Add loading states for async operations
- Use React Query for server state
API Development
- Use Hono for API routes
- Implement proper validation with Zod
- Add OpenAPI documentation
- Use API client on frontend (Hono RPC)
- Handle errors gracefully
Database
- Define clear schema with Drizzle
- Use migrations for schema changes
- Add indexes for performance
- Use prepared statements
- Handle transactions properly
Troubleshooting
Common Issues
-
Database connection fails
- Check
is correctDATABASE_URL - Verify PostgreSQL service is running
- Check network/firewall settings
- Check
-
Build fails with type errors
- Run
to see detailspnpm check-types - Ensure all packages are built
- Check
settingstsconfig.json
- Run
-
Port already in use
- Check which process is using port 5173/3000
- Kill the process or use different port
-
Environment variables not loading
- Verify
file exists in.envapps/web/ - Check variable names are correct
- Restart development server
- Verify
Resources
- Documentation:
/packages/cms/content/docs/ - AGENTS.md: Project-specific guidelines
- Package READMEs: Each package has its own README
- External Docs: