A full-stack platform connecting real estate agents with professional photography studios for property shoots, built with modern technologies and clean architecture principles.
- Multi-Role System: Admin, Agent, Staff, and User roles with granular permissions
- Property Listings: Create, manage, and showcase property listings with rich media
- Order Management: Complete photography order workflow from placement to delivery
- Team Collaboration: Agency and Studio team management with invitation system
- Delivery System: Secure media delivery with access control and expiration
- Application System: Professional application process for Agencies and Studios
- Domain-Driven Design (DDD): Clean architecture with separated concerns
- CQRS Pattern: Command/Query Responsibility Segregation for read/write operations
- Real-time Updates: SignalR for progress tracking and notifications
- Media Management: Cloudinary integration for asset storage
- Responsive Design: Mobile-first UI with modern components
- Type Safety: Full TypeScript and C# type coverage
- Framework: Next.js 16 (React 19) with App Router
- Language: TypeScript 5
- Styling: Tailwind CSS + shadcn/ui components
- State Management: TanStack Query (React Query) + Zustand
- Forms: React Hook Form + Zod validation
- Real-time: SignalR client
- Framework: .NET 8.0
- Architecture: DDD with CQRS pattern
- Database: SQL Server with Entity Framework Core
- Authentication: ASP.NET Identity with JWT
- Background Jobs: Hangfire
- Media Storage: Cloudinary
- API Documentation: Swagger/OpenAPI
- Containerization: Docker + Docker Compose
- Database: SQL Server 2022 (Linux)
- Package Manager: pnpm (frontend), NuGet (backend)
- Node.js 20+ and pnpm
- .NET 8.0 SDK
- Docker Desktop
- SQL Server (or use Docker)
git clone <repository-url>
cd Reampcd backend/docker
docker-compose up -dThis will start:
- SQL Server on port 1433
- Backend API on port 5000
cd frontend
pnpm install
pnpm devFrontend will be available at http://localhost:3000
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
- API Documentation: http://localhost:5000/swagger
See TEST-ACCOUNTS.md for complete account information.
| Role | Password | |
|---|---|---|
| Admin | admin@reamp.com | Test@123 |
| Agent | agent1@reamp.com | Test@123 |
Reamp/
├── frontend/ # Next.js application
│ ├── src/
│ │ ├── app/ # App router pages
│ │ ├── components/ # React components
│ │ ├── lib/ # Utilities and hooks
│ │ └── types/ # TypeScript types
│ └── public/ # Static assets
│
├── backend/ # .NET solution
│ ├── src/Reamp/
│ │ ├── Reamp.Api/ # REST API layer
│ │ ├── Reamp.Application/ # Application services
│ │ ├── Reamp.Domain/ # Domain entities
│ │ └── Reamp.Infrastructure/ # Data access
│ └── docker/ # Docker configuration
│
└── .cursor/rules/ # Development rules
┌─────────────────────────────────────────┐
│ Reamp.Api (Presentation) │
│ Controllers, Middleware, SignalR Hubs │
└──────────────┬──────────────────────────┘
│
┌──────────────▼──────────────────────────┐
│ Reamp.Application (Use Cases) │
│ Commands, Queries, DTOs, Validators │
└──────────────┬──────────────────────────┘
│
┌──────────────▼──────────────────────────┐
│ Reamp.Domain (Business Logic) │
│ Entities, Value Objects, Repositories │
└──────────────┬──────────────────────────┘
│
┌──────────────▼──────────────────────────┐
│ Reamp.Infrastructure (Data & External) │
│ EF Core, Repositories, External APIs │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ App Router (Pages) │
│ Server/Client Components, Layouts │
└──────────────┬──────────────────────────┘
│
┌──────────────▼──────────────────────────┐
│ Components (UI Layer) │
│ Reusable UI components, Forms │
└──────────────┬──────────────────────────┘
│
┌──────────────▼──────────────────────────┐
│ Hooks & State (Data Layer) │
│ TanStack Query, Zustand, API clients │
└─────────────────────────────────────────┘
User registers → Applies as Agency → Admin reviews → Approved → User becomes Agent
Agent creates Listing → Creates Order → Studio accepts → Assigns Staff → Completes shoot → Delivers media → Agent confirms
Owner invites member → Member receives email → Accepts invitation → Joins team with assigned role
NEXT_PUBLIC_API_URL=http://localhost:5000
NEXT_PUBLIC_GOOGLE_MAPS_API_KEY=your_google_maps_key{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost,1433;Database=ReampDb;..."
},
"Cloudinary": {
"CloudName": "your_cloud_name",
"ApiKey": "your_api_key",
"ApiSecret": "your_api_secret"
}
}cd frontend
# Install dependencies
pnpm install
# Start development server
pnpm dev
# Run type checking
pnpm type-check
# Run linting
pnpm lint
# Build for production
pnpm buildcd backend/src/Reamp
# Restore packages
dotnet restore
# Run the API
dotnet run --project Reamp.Api
# Run tests
dotnet test
# Create migration
dotnet ef migrations add MigrationName --project Reamp.Infrastructure --startup-project Reamp.Api# Reset database (WARNING: Deletes all data)
cd backend/docker
.\reset-database.ps1
# Inject sample data
.\inject-sample-data.ps1# Backend
cd backend/src/Reamp
dotnet test
# Frontend (when implemented)
cd frontend
pnpm testThis project follows strict coding conventions:
- Commits: Conventional Commits format
- Frontend: Next.js best practices (see
.cursor/rules/nextjs.mdc) - Backend: DDD patterns (see
.cursor/rules/ddd-backend.mdc) - General: Common rules (see
.cursor/rules/common.mdc)
- Create a feature branch:
git checkout -b feat/feature-name - Follow commit conventions:
feat:,fix:,refactor:, etc. - Ensure tests pass and code is formatted
- Create a pull request
This project is proprietary and confidential.
- Test Accounts - Test user credentials and roles
- API Documentation - Interactive API docs (when running)
- Google Maps integration requires API key configuration
- Some advanced features are still in development
For questions or issues, please contact the development team.
Built with modern web technologies