Thank you for contributing to this special wedding website project! This guide will help you get started.
- Node.js: Version 20.10.0 or higher (LTS recommended)
- npm: Comes with Node.js
- MySQL: Required for production database
- Git: For version control
This project uses Node.js 20 LTS. We recommend using nvm:
# Install/use the correct Node version
nvm use
# Or install if not present
nvm install-
Clone the repository
git clone https://github.com/syed-reza98/Sharothee-Wedding.git cd Sharothee-Wedding/client -
Install dependencies
npm install
-
Environment configuration
# Copy example environment file cp .env.local.example .env.local # Edit .env.local with your configuration # See SECURITY.md for secret management guidelines
-
Database setup
# Generate Prisma client npm run db:generate # Push schema to database npm run db:push # Seed with sample data (optional) npm run db:seed
# Create and apply a new migration
npm run db:migrate
# Reset database (destructive!)
npm run db:reset
# View database in browser
npm run db:studio# Deploy migrations to production database
npx prisma migrate deploy
# Push schema changes without migration files
npm run db:pushImportant: Always backup production data before running migrations!
# Start Next.js development server with Turbopack
npm run dev
# Access at http://localhost:3000npm run dev- Start development server with Turbopacknpm run build- Build for productionnpm start- Start production servernpm run lint- Check code stylenpm run lint:fix- Fix linting issues automaticallynpm run type-check- TypeScript type checkingnpm run analyze- Bundle analysis buildnpm run security:scan- Security vulnerability scan
# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Generate coverage report
npm run test:coverage# Run E2E tests
npm run e2e
# Run E2E tests with UI (headed mode)
npm run e2e:headed# Test specific API endpoints
npm run test:api:rsvpNote: Some API tests may fail in Jest environment due to Next.js Request/Response context limitations. This is expected and acceptable.
- ESLint configuration in
eslint.config.mjs - Next.js recommended rules enabled
- TypeScript strict mode enforced
- All new code must include proper TypeScript types
- Prisma generates database types automatically
- Use Zod for API request/response validation
client/src/
├── app/ # Next.js App Router pages
├── components/ # Reusable React components
├── lib/ # Utilities, API clients, Prisma
└── types/ # TypeScript type definitions
type(scope): brief description
- Use present tense ("add feature" not "added feature")
- Keep first line under 50 characters
- Reference issues with #issue-number
Types: feat, fix, docs, style, refactor, test, chore
-
Create feature branch
git checkout -b feature/your-feature-name
-
Make changes with tests
- Write unit tests for new features
- Update integration tests if needed
- Ensure all tests pass
-
Lint and type check
npm run lint:fix npm run type-check
-
Build and test
npm run build npm test -
Create pull request
- Provide clear description
- Link related issues
- Request review from maintainers
- Code follows project conventions
- All tests pass
- TypeScript types are correct
- No security vulnerabilities introduced
- Documentation updated if needed
- Server State: React Query for API data
- Local UI State: Zustand for complex client state
- Form State: React Hook Form with Zod validation
- RESTful endpoints in
src/app/api/ - Request/response validation with Zod
- Error handling with proper HTTP status codes
- NextAuth.js for admin authentication
- Prisma ORM with MySQL
- SQLite for development/testing
- Migrations for schema changes
- Seed scripts for sample data
This is a production wedding website with specific requirements:
- Guest Experience: All features must work flawlessly for wedding guests
- Mobile Responsiveness: Many guests will use mobile devices
- Performance: Fast loading times are critical
- Data Accuracy: RSVP and guest information must be reliable
- Dynamic Server: Cannot use static export due to NextAuth.js
- MySQL Required: Production database is MySQL, not SQLite
- Environment Variables: All secrets must be properly configured
ARCHITECTURE.md- System architecture overviewSECURITY.md- Security guidelines and secret managementdocs/CI_PIPELINE_PLAN.md- Planned CI/CD workflow
- Primary Contact: codestromhub@gmail.com
- Phone: +880 1234-567890
- Location: Dhaka, Bangladesh
This website will be live during Incia & Arvin's wedding celebration!
- Test thoroughly before deploying
- Monitor performance and errors
- Have rollback plan ready
- Coordinate deployments with wedding timeline
Thank you for helping make Incia & Arvin's special day perfect! 🎉💒