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 modularization βœ… Server/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 optimization βœ… Cloudinary CDN for media βœ… Integrated analytics (Vercel) βœ… Query optimization with indexes βœ… Caching strategies for static assets