rasheleperfumeria.com



Project Summary - Rashele Perfumery

Overview

Rashele Perfumery is a full-stack e-commerce web application specialized in perfume and fragrance sales.

Type: E-Commerce Web Application Purpose: Retail platform specialized in perfumery with administration panel, customer management, and marketing automation.


Main Features

Customer Features

  • Product Catalog: Browse by categories (Women, Men, Unisex, Special Offers)
  • Product Details: Complete perfume information (brand, size, gender, concentration: EDT, EDP, Parfum)
  • Newsletter Subscription: Email marketing with double opt-in verification
  • Multi-Currency: Support for multiple currencies with exchange rates
  • Multi-Language: Bilingual content (Spanish/English)

Administration Panel

  • Product Management: Complete CRUD with image upload
  • Category Management: Hierarchical product organization
  • Newsletter: Subscriber management and segmented campaigns
  • Marketing Campaigns: Email scheduling and sending
  • Blog/Posts: Content creation with social media integration
  • Settings Panel: Site settings, branding
  • Data Migration: CSV import tools

Technology Stack

Frontend

TechnologyVersionUse
Next.js15.5.4Main framework with App Router
React19.1.0UI library
TypeScript5Main language
Tailwind CSS3.4.17Styling framework
Radix UI-UI component library
React Hook Form7.63.0Form management
Zod4.1.11Schema validation
Lucide React0.544.0Icons
Next-themes0.4.6Theme management
Sonner2.0.7Toast notifications

Backend & Database

TechnologyVersionUse
Prisma6.17.0ORM
PostgreSQL-Database (Neon cloud)
NextAuth.js4.24.11Authentication
bcryptjs3.0.2Password hashing

External Services

ServicePurpose
CloudinaryImage hosting and CDN
ResendTransactional email service
Vercel AnalyticsPerformance analytics

Development Tools

  • ESLint 9: Linting with Next.js configuration
  • date-fns: Date handling
  • csv-parse: CSV processing for migrations

Architecture and Patterns

Project Structure

/perfumeria-rashelle/
├── src/
│   ├── app/                    # Next.js App Router
│   │   ├── (public)/           # Public pages
│   │   ├── admin/              # Admin dashboard (protected)
│   │   └── api/                # API routes
│   ├── components/             # React components
│   │   ├── admin/              # Admin components
│   │   └── ui/                 # Reusable components
│   ├── contexts/               # React contexts (LanguageContext)
│   ├── hooks/                  # Custom hooks (useCurrency, useSiteSettings)
│   ├── lib/                    # Utilities and configuration
│   │   ├── auth.ts             # NextAuth config
│   │   ├── db.ts               # Prisma client
│   │   ├── validations.ts      # Zod schemas
│   │   └── email.ts            # Email templates
│   └── middleware.ts           # Next.js middleware (auth/CORS)
├── prisma/
│   ├── schema.prisma           # Database schema (13 models)
│   └── seed.ts                 # Seeding script
├── public/                     # Static assets
├── scripts/
│   └── create-admin.ts         # Admin user creation
└── MD Files/                   # Documentation (23+ files)

Implemented Patterns

  1. Next.js App Router: Server Components for server-side rendering
  2. Layered Authentication: NextAuth.js with JWT strategy, route protection via middleware
  3. Role-Based Access Control: ADMIN/CLIENTE
  4. ORM & Database: Prisma with PostgreSQL, defined relationships
  5. Design System: Reusable components based on Radix UI
  6. RESTful API: API routes with Zod validation and consistent error handling

Database Models (13)

  • User, Product, Category
  • Order, OrderItem
  • Newsletter, Campaign
  • Post, SocialMedia
  • SearchLog, SiteSettings
  • Configuration, PaymentMethod

Implemented Best Practices

Security

Authentication & Authorization

  • Password hashing with bcryptjs
  • JWT sessions with 7-day expiration
  • Role-based access control
  • CSRF protection in middleware
  • CORS protection with allowed origins

Data Validation

  • Input validation with Zod schemas
  • SQL injection prevention via Prisma ORM
  • Strong password requirements (12+ characters, uppercase, lowercase, numbers, special characters)
  • Generic error messages to prevent user enumeration

Security Headers

  • X-Frame-Options
  • X-Content-Type-Options
  • Content Security Policy (CSP)

Secrets Management

  • Separate environment variables (.env)
  • Credentials not committed in code

Code Quality

TypeScript Strict Mode enabled ✅ ESLint configured with Next.js standards ✅ Naming conventions consistent ✅ Component modularizationServer/Client Components separation ✅ Complete Type Safety with Zod ✅ Database indexing on frequently queried fields

Data Management

Type-Safe ORM with Prisma ✅ Schema versioning (migrations) ✅ Relational integrity (foreign keys) ✅ Cascade deletion for related records ✅ Seed script for test data

Performance

Next.js image optimizationCloudinary CDN for media ✅ Integrated analytics (Vercel) ✅ Query optimization with indexes ✅ Caching strategies for static assets