Уеб приложение за управление на училищни клубове, изградено с ASP.NET Core 8.0 MVC.
- ASP.NET Core 8.0 MVC
- Entity Framework Core 8.0 с SQL Server (LocalDB)
- ASP.NET Core Identity за автентикация и авторизация
- Bootstrap 5.3 за UI
- xUnit + Moq за тестване
- Разглеждане, търсене и филтриране по категория
- Създаване, редактиране на клубове (Admin/Teacher)
- Записване / напускане на клуб
- Лимит на членове
- Създаване на събития към клуб
- Записване за събитие (RSVP) с лимит на участници
- Отбелязване на присъствие с код (QR check-in)
- Преглед на предстоящи и минали събития
- Отмяна и възстановяване на събития
- Автоматично присъждане на бадж-ове при достигане на условия
- Видове: брой клубове, посетени събития, дни членство, обяви, снимки
- Точкова система с натрупване
- Анализира категориите на текущите клубове на потребителя
- Предлага нови клубове от същите или сходни категории
- За нови потребители показва най-популярните
- Топ ученици по натрупани точки
- Профилна страница с награди и статистики
- Ранг в общата класация
- Публикуване на обяви с приоритет (нисък, нормален, висок, спешен)
- Закачване на важни обяви в началото
- Автор и дата на публикуване
- Качване на снимки към клуб
- Валидация на формат и размер (макс. 5MB)
- Описание на снимките
- Общи статистики
- Моите клубове и предстоящи събития
- Последни обяви и награди
- Препоръчани клубове
- Обща табло със статистики (потребители, клубове, събития, обяви, обратна връзка)
- Управление на клубове (активиране/деактивиране, изтриване) - отделна страница
- Управление на потребителски роли - отделна страница
- Управление и разрешаване на обратна връзка - отделна страница
- Преглед на категории на обратна връзка
- Преглед на профил с клубове, награди и точки
- Редактиране на профил (име, клас, биография, снимка)
- Експорт на членове като CSV файл
- Статистики на клуб (членове, събития, посещаемост)
- Подаване на обратна връзка с категория (Общо, Бъг, Нова функция, Клуб, Събитие)
- Преглед на лична история с обратна връзка
- Администраторски отговор и разрешаване
- Български / Английски с бутон за превключване
- 100+ преведени елемента
- Запазване на избора в localStorage
- Превключване с бутон в навигацията
- Запазване на избора в localStorage
| Роля | Права |
|---|---|
| Student | Разглеждане, записване, участие в събития, обратна връзка |
| Teacher | Създаване и управление на клубове |
| Admin | Пълен достъп, админ панел, управление на роли и обратна връзка |
SchoolClubs/
├── SchoolClubs.sln
├── SchoolClubs.Web/
│ ├── Controllers/
│ │ ├── HomeController.cs
│ │ ├── ClubsController.cs
│ │ ├── EventsController.cs
│ │ ├── AnnouncementsController.cs
│ │ ├── GalleryController.cs
│ │ ├── ProfileController.cs
│ │ ├── AdminController.cs
│ │ └── FeedbackController.cs
│ ├── Models/
│ │ ├── ApplicationUser.cs
│ │ ├── Club.cs
│ │ ├── ClubMembership.cs
│ │ ├── Event.cs
│ │ ├── EventAttendance.cs
│ │ ├── Announcement.cs
│ │ ├── Achievement.cs
│ │ ├── UserAchievement.cs
│ │ ├── GalleryPhoto.cs
│ │ ├── Feedback.cs
│ │ └── ViewModels/
│ ├── Data/
│ │ ├── AppDbContext.cs
│ │ └── SeedData.cs
│ ├── Services/
│ │ ├── ClubRecommendationService.cs
│ │ └── AchievementService.cs
│ ├── Views/
│ │ ├── Home/
│ │ ├── Clubs/
│ │ ├── Events/
│ │ ├── Announcements/
│ │ ├── Gallery/
│ │ ├── Profile/
│ │ ├── Admin/
│ │ ├── Feedback/
│ │ └── Shared/
│ └── wwwroot/
│ ├── css/site.css
│ └── js/site.js
└── SchoolClubs.Tests/
├── AchievementServiceTests.cs
├── ClubRecommendationServiceTests.cs
└── ClubsControllerTests.cs
- .NET 8.0 SDK
- SQL Server LocalDB (включен с Visual Studio)
git clone https://github.com/ValioTod/SchoolClubs.git
cd SchoolClubs
git checkout working-version
dotnet run --project SchoolClubs.WebПриложението е достъпно на http://localhost:5000. Базата данни се създава и засява автоматично при първо стартиране — не са нужни миграции.
Приложението е готово за развръщане в производство. Съществуват няколко опции:
docker-compose up -dВижте подробното DEPLOYMENT.md за конфигурация и опции.
Вижте DEPLOYMENT.md за пълни инструкции.
Вижте DEPLOYMENT.md за пълна конфигурация със systemd услуга.
✅ Одобрение на членство на клуб (Membership Approval) ✅ Валидация на дати на события (Prevent Past Events) ✅ Управление на роли на администратор със свежаване на сесия ✅ Отделни страници за управление (Users, Clubs, Feedbacks) ✅ Категории в обратна връзка (Feedback Categories) ✅ Docker и Docker Compose поддръжка ✅ GitHub Actions CI/CD pipeline ✅ Документация за развръщане
| Роля | Парола | |
|---|---|---|
| Admin | admin@schoolclubs.bg | Admin123! |
| Student | ivan.petrov@school.bg | Student123! |
| Student | maria.ivanova@school.bg | Student123! |
| Student | georgi.dimitrov@school.bg | Student123! |
| Student | elena.stoyanova@school.bg | Student123! |
| Student | nikolay.kolev@school.bg | Student123! |
dotnet test43 теста (5 Achievement + 5 Recommendation + 4 Controller + 29 Integration) - всички преминават успешно ✅
| Имейл | Парола | Роля |
|---|---|---|
| admin@schoolclubs.bg | Admin123! | Admin |
| teacher@schoolclubs.bg | Teacher123! | Teacher |
| ivan.petrov@school.bg | Student123! | Student |
| maria.ivanova@school.bg | Student123! | Student |
| georgi.dimitrov@school.bg | Student123! | Student |
| elena.stoyanova@school.bg | Student123! | Student |
| nikolay.kolev@school.bg | Student123! | Student |
Проектът е напълно преносим между различни компютри:
- Копирайте или клонирайте проекта
- Уверете се, че .NET 8.0 SDK и SQL Server LocalDB са инсталирани
- Стартирайте с
dotnet run --project SchoolClubs.Web - Базата данни се създава и засява автоматично
- 🚀 AZURE_QUICKSTART.md - Deploy в 5 минути (Azure)
- 🚀 RENDER_QUICKSTART.md - Deploy в 10 минути (Render Docker)
- AZURE_DEPLOYMENT.md - Детално ръководство за Azure App Service
- RENDER_DEPLOYMENT.md - Детално ръководство за Render
- AZURE_DEPLOYMENT_CHECKLIST.md - Контролен списък за развръщане
- DEPLOYMENT.md - Пълно ръководство за всички опции (Docker, IIS, Linux)
- IMPLEMENTATION_SUMMARY.md - Резюме на всички решени проблеми
- Leaderboard_Criteria_BG.md - Система за класация и точки
Изберете един от двата препоръчани варианта:
.\scripts\azure-setup.ps1
dotnet publish SchoolClubs.Web -c Release -o ./publish
az webapp up --resource-group schoolclubs-rg --name schoolclubs-app --runtime DOTNETCORE:8.0👉 Azure Quick Start → (5 minutes)
- Create Render account at render.com
- Connect GitHub repo
- Create Web Service with Docker
- Set environment variables
- Deploy! ✅ 👉 Render Quick Start → (10 minutes)
Други опции: Docker, IIS, Linux - вижте DEPLOYMENT.md