A comprehensive university societies management system that empowers student communities through modern technology. Built with Angular and .NET, TSP streamlines society operations, event management, and member engagement with AI-powered insights.
π Visit The Societies Portal
- Features
- Technology Stack
- Architecture
- Getting Started
- Project Structure
- User Roles
- API Documentation
- Contributing
- License
- Multi-Role Authentication: JWT-based authentication with role-based access control
- Society Management: Create, manage, and customize university societies
- Event Management: Comprehensive event planning, scheduling, and tracking
- Membership System: Streamlined membership requests and approval workflow
- Real-time Notifications: Live updates using SignalR
- Resource Allocation: Efficient management and allocation of university resources
- Feedback Analysis: AI-powered sentiment analysis of event feedback
- Smart Summaries: Automatic generation of event feedback summaries
- Topic Extraction: Intelligent identification of recurring themes in feedback
- Dashboard Analytics: Comprehensive insights and statistics
- PDF Reports: Generate detailed reports for events and societies
- Chart Visualizations: Interactive charts using Chart.js
- Performance Metrics: Track society and event performance
- QR Code Generation: Easy event check-ins and information sharing
- Email Notifications: Automated email system for important updates
- File Management: Secure file upload and management system
- Search & Filtering: Advanced search capabilities across the platform
- Mobile Responsive: Fully responsive design for all devices
- Framework: Angular 19
- UI Library: Ng-Zorro (Ant Design for Angular)
- Styling: Tailwind CSS
- Charts: Chart.js with ng2-charts
- Icons: Ant Design Icons
- Authentication: @auth0/angular-jwt
- PDF Generation: jsPDF with jsPDF-AutoTable
- QR Codes: angularx-qrcode
- Framework: .NET 9
- Database: SQL Server with Entity Framework Core 9
- Authentication: ASP.NET Identity with JWT
- Real-time: SignalR
- Background Jobs: Quartz.NET
- Validation: FluentValidation
- Documentation: Swagger/OpenAPI
- AI Integration: Microsoft.Extensions.AI with Ollama
- Local LLM: Phi3 model for feedback analysis
- Sentiment Analysis: Custom AI-powered sentiment classification
- Frontend Hosting: Firebase Hosting
- Backend: Can be deployed to Azure, AWS, or any cloud provider
- Database: SQL Server (Azure SQL, AWS RDS, or on-premises)
- CI/CD: GitHub Actions ready
TSP follows Clean Architecture principles with clear separation of concerns:
βββ TSP.Domain/ # Core business entities and rules
βββ TPS.Application/ # Use cases and business logic
βββ TPS.Infrastructure/ # External concerns (DB, Email, AI)
βββ TSP.WebAPI/ # API controllers and configuration
βββ TSP.App/ # Angular frontend application
- CQRS: Command Query Responsibility Segregation with MediatR
- Repository Pattern: Data access abstraction
- Domain Events: Decoupled event handling
- Background Processing: Asynchronous job processing
- Clean Architecture: Dependency inversion and separation of concerns
- .NET 9 SDK
- Node.js 18+
- SQL Server (LocalDB for development)
- Ollama (for AI features)
-
Clone the repository
git clone https://github.com/your-username/TSP.git cd TSP -
Backend Setup
# Navigate to API project cd TSP.WebAPI # Restore packages dotnet restore # Update database dotnet ef database update # Run the API dotnet run
-
Frontend Setup
# Navigate to Angular app cd TSP.App # Install dependencies npm install # Start development server ng serve
-
AI Setup (Optional)
# Install Ollama curl -fsSL https://ollama.ai/install.sh | sh # Pull the model ollama pull phi3
Update appsettings.json in TSP.WebAPI:
{
"ConnectionStrings": {
"DefaultConnection": "Your SQL Server connection string"
},
"Jwt": {
"Key": "Your-Secret-Key",
"Issuer": "TSP",
"Audience": "TSP-Users"
},
"Email": {
"SmtpServer": "smtp.gmail.com",
"SmtpPort": 587,
"Username": "your-email@gmail.com",
"Password": "your-app-password"
},
"Ollama": {
"DefaultModel": "phi3",
"InnerClientUri": "http://localhost:11434"
}
}TSP.WebAPI/
βββ Controllers/ # API controllers
β βββ AdminArea/ # Admin-specific endpoints
β βββ StudentArea/ # Student-specific endpoints
β βββ SuperAdminArea/ # Super admin endpoints
βββ Validation/ # Request validation
βββ DependencyInjection.cs
TPS.Application/
βββ Areas/ # Feature-based organization
β βββ Authentication/ # Auth services
β βββ Feedback/ # AI feedback analysis
β βββ Shared/ # Shared services
βββ SignalR/ # Real-time hubs
TPS.Infrastructure/
βββ Data/ # Entity Framework setup
βββ Emailing/ # Email services
βββ AiClient/ # AI integration
βββ BackgroundJobs/ # Quartz jobs
TSP.Domain/
βββ Entities/ # Core business entities
βββ Enums/ # Domain enumerations
βββ Events/ # Domain events
TSP.App/src/app/
βββ areas/ # Feature modules
β βββ authentication/ # Login/Register
β βββ student-area/ # Student dashboard
β βββ system-admin-area/ # Admin panel
β βββ super-admin/ # Super admin controls
β βββ public/ # Landing page
β βββ public-forms/ # Public forms
βββ components/ # Shared components
βββ common/ # Utilities and services
βββ config/ # App configuration
- Join societies and manage memberships
- Register for events and provide feedback
- View personal dashboard and activity history
- Access society-specific resources
- Oversee assigned societies
- Approve events and membership requests
- Access society analytics and reports
- Manage society resources
- Manage all societies and events
- User management and role assignment
- System-wide analytics and reporting
- Resource allocation oversight
- Complete system administration
- Manage system configurations
- Access all administrative functions
- System maintenance and monitoring
The API is fully documented with Swagger/OpenAPI. After running the backend:
- Swagger UI:
https://localhost:7000/swagger - API Base URL:
https://localhost:7000/api
Authentication
POST /api/authentication/login
POST /api/authentication/register
Societies
GET /api/societies
POST /api/societies
PUT /api/societies/{id}
Events
GET /api/events
POST /api/events
GET /api/events/{id}/feedback
Notifications
GET /api/notifications
WebSocket: /api/hubs/notifications
- Domain First: Add entities to
TSP.Domain/Entities - Application Layer: Create commands/queries in
TPS.Application/Areas - Infrastructure: Implement data access in
TPS.Infrastructure - API: Add controllers in
TSP.WebAPI/Controllers - Frontend: Create components in
TSP.App/src/app/areas
# Add migration
dotnet ef migrations add MigrationName
# Update database
dotnet ef database update# Backend tests
dotnet test
# Frontend tests
ng test- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License.
Built with β€οΈ for university communities
For support or questions, please open an issue or contact the development team.