|
| 1 | +# Evently - Event Management Application |
| 2 | + |
| 3 | +A modern, full-stack event management platform built with .NET and React, designed to streamline event organization and management processes. |
| 4 | + |
| 5 | +## 📋 Features |
| 6 | +- 🎫 **Event Creation & Management** - Create and manage events with detailed information |
| 7 | +- 👥 **User Authentication** - Google OAuth integration |
| 8 | +- 📱 **QR Code Support** - Generate and scan QR codes for events |
| 9 | +- 🖼️ **Image Management** - Upload and compress event images |
| 10 | +- 📊 **Data Export** - Export event data to CSV |
| 11 | +- 📧 **Email Notifications** - Automated email system |
| 12 | +- 📱 **Progressive Web App** - Mobile-friendly experience |
| 13 | +- 🔍 **Advanced Search & Filtering** - Find events easily |
| 14 | + |
| 15 | + |
| 16 | +## 🚀 Quick Start |
| 17 | + |
| 18 | +### 🌐 Live Demo |
| 19 | +Experience Evently in action: [Website](https://ca-evently-prod-sea.graybush-4e3751bc.southeastasia.azurecontainerapps.io/) |
| 20 | + |
| 21 | +### 🐳 Docker (Recommended) |
| 22 | +Get up and running in minutes with Docker: |
| 23 | + |
| 24 | +Update your `docker-compose.yml` with your email and Google OAuth Client credentials: |
| 25 | +```yaml |
| 26 | +environment: |
| 27 | + # ... other environment variables ... |
| 28 | + Authentication__Google__ClientId: "your-google-client-id" |
| 29 | + Authentication__Google__ClientSecret: "your-google-client-secret" |
| 30 | + EmailSettings__ActualFrom: "[email protected]" |
| 31 | + EmailSettings__SmtpPassword: "your-app-password" |
| 32 | +``` |
| 33 | +
|
| 34 | +Then, run the container: |
| 35 | +
|
| 36 | +```bash |
| 37 | +# Build and run with Docker Compose |
| 38 | +docker-compose up --build |
| 39 | + |
| 40 | +# Access the application |
| 41 | +# Website: http://localhost:4000 |
| 42 | +``` |
| 43 | + |
| 44 | + |
| 45 | +## 🛠 Tech Stack |
| 46 | +### ⚙️ Backend |
| 47 | +- **Framework**: .NET 9.0 with ASP.NET Core |
| 48 | +- **Language**: C# 13.0 |
| 49 | +- **UI Framework**: Blazor Server components |
| 50 | +- **Architecture**: Web API with MVC pattern |
| 51 | + |
| 52 | +### 🎨 Frontend |
| 53 | +- **Framework**: React 19 |
| 54 | +- **Language**: TypeScript 5 |
| 55 | +- **Routing**: TanStack Router v1 |
| 56 | +- **State Management**: TanStack React Query v5 |
| 57 | +- **Styling**: Tailwind CSS 4 with DaisyUI 5 |
| 58 | +- **Build Tool**: Vite 7 |
| 59 | + |
| 60 | +### 🏗️ Infrastructure & DevOps |
| 61 | +- **CI/CD**: GitHub Actions |
| 62 | +- **Cloud**: Azure |
| 63 | +- **IAC**: Terraform |
| 64 | + |
| 65 | +## 🏁 Getting Started |
| 66 | + |
| 67 | +### Prerequisites |
| 68 | +- .NET 9.0 SDK |
| 69 | +- Node.js (with npm/pnpm) |
| 70 | +- Docker (optional) |
| 71 | +- pnpm |
| 72 | + |
| 73 | +### Installation |
| 74 | + |
| 75 | +1. **Clone the repository** |
| 76 | + ```bash |
| 77 | + git clone <repository-url> |
| 78 | + cd evently |
| 79 | + |
| 80 | +2. **Install dependencies** |
| 81 | + ```bash |
| 82 | + # Backend dependencies (if needed) |
| 83 | + dotnet restore |
| 84 | +
|
| 85 | + # Frontend dependencies |
| 86 | + cd src/evently.client && pnpm install |
| 87 | + ``` |
| 88 | + |
| 89 | +3. **Development Setup** |
| 90 | + ```bash |
| 91 | + # In one terminal |
| 92 | + make dev |
| 93 | + |
| 94 | + # In another terminal |
| 95 | + cd src/evently.client && pnpm run dev |
| 96 | + ``` |
| 97 | + |
| 98 | +## 🧪 Testing |
| 99 | +The project includes a comprehensive testing setup: |
| 100 | +- **Testing Framework**: Vitest 3.2.4 |
| 101 | +- **React Testing**: React Testing Library 16.3.0 |
| 102 | +- **DOM Testing**: Testing Library DOM 10.4.1 |
| 103 | +- **User Interaction Testing**: User Event 14.6.1 |
| 104 | + |
| 105 | +Run tests: |
| 106 | +``` bash |
| 107 | +# Backend tests |
| 108 | +dotnet test tests/Evently.Server.Test/ |
| 109 | +
|
| 110 | +# Frontend tests |
| 111 | +cd src/evently.client && pnpm test |
| 112 | +``` |
| 113 | + |
| 114 | + |
| 115 | +## 🔧 Development |
| 116 | +### Code Quality |
| 117 | +The project maintains high code quality standards with: |
| 118 | +- **ESLint**: JavaScript/TypeScript linting |
| 119 | +- **Prettier**: Code formatting |
| 120 | +- **EditorConfig**: Consistent coding styles |
| 121 | +- **TypeScript**: Strong typing for frontend |
| 122 | + |
| 123 | +### Build Tools |
| 124 | +- **Vite**: Fast development server and build tool |
| 125 | +- **Makefile**: Standardized build commands |
| 126 | +- **Docker Compose**: Development environment orchestration |
| 127 | + |
| 128 | +### 📁 Project Structure |
| 129 | +The project follows a **Feature Folder Structure** or **Vertical Slice Architecture** pattern, |
| 130 | +organizing code by business features rather than technical layers. This approach encourages modularity and separation of concerns. |
| 131 | + |
| 132 | +``` |
| 133 | +evently/ |
| 134 | +├── src/ # Source code |
| 135 | +│ ├── evently.client/ # React frontend application |
| 136 | +│ │ └── src/ |
| 137 | +│ │ ├── routes/ # Route-based feature organization |
| 138 | +│ │ │ ├── login/ # Authentication features |
| 139 | +│ │ │ ├── bookings/ # Booking management features |
| 140 | +│ │ │ ├── gatherings/ # Event/gathering management features |
| 141 | +│ │ │ ├── healthcheck/ # System health monitoring |
| 142 | +│ │ │ └── ... |
| 143 | +│ │ └── lib/ # Shared utilities and components |
| 144 | +│ └── Evently.Server/ # .NET backend application |
| 145 | +│ └── Common/ # Shared utilities and infrastructure |
| 146 | +│ └── Features/ # Feature-based organization |
| 147 | +│ ├── Accounts/ # User authentication & authorization |
| 148 | +│ ├── Bookings/ # Booking system features |
| 149 | +│ ├── Gatherings/ # Event management features |
| 150 | +│ ├── Files/ # Blob Storage features |
| 151 | +│ └── ... |
| 152 | +├── tests/ # Test projects |
| 153 | +│ └── Evently.Server.Test/ # Backend unit tests |
| 154 | +├── deploy/ # Infrastructure and deployment |
| 155 | +│ └── Terraform/ # Terraform infrastructure code |
| 156 | +├── .github/ # GitHub Actions workflows |
| 157 | +│ └── workflows/ |
| 158 | +│ ├── build.yml # CI pipeline |
| 159 | +│ └── deploy.yml # Deployment pipeline |
| 160 | +├── docker-compose.yml # Docker services configuration |
| 161 | +└── Makefile # Build automation |
| 162 | +``` |
0 commit comments