A comprehensive system for evaluating and ranking college clubs with a FastAPI backend and Streamlit frontend.
SNUCC_club/
├── backend/ # FastAPI backend
│ ├── main.py # Main API application
│ ├── requirements.txt # Backend dependencies
│ ├── models/ # Data models
│ ├── services/ # Business logic services
│ ├── data/ # JSON data files
│ └── Scrapper/ # Data scraping utilities
├── frontend/ # Streamlit frontend
│ ├── app.py # Main Streamlit application
│ ├── requirements.txt # Frontend dependencies
│ └── README.md # Frontend documentation
├── start_app.bat # Windows batch script to start both services
└── start_app.ps1 # PowerShell script to start both services
- RESTful API with comprehensive endpoints
- Club Management: CRUD operations for clubs
- Ranking System: Overall and group-based rankings
- Analytics: Social media, events, and WhatsApp analytics
- Grouping: Automatic club categorization
- Voting System: Integration with voting data
- Data Models: Pydantic models for type safety
- Dashboard: Key metrics and statistics overview
- Club Rankings: Interactive rankings with visualizations
- Club Groups: Browse clubs by categories
- Club Details: Comprehensive club information
- Analytics Dashboard: Visual analytics for individual clubs
- Voting Results: Summary of voting data
- Responsive Design: Clean and modern UI
-
Start Backend:
cd backend pip install -r requirements.txt uvicorn main:app --reload --host 0.0.0.0 --port 8000
-
Start Frontend:
cd frontend pip install -r requirements.txt streamlit run app.py
- Backend API: http://localhost:8000
- API Documentation: http://localhost:8000/docs (Swagger UI)
- Frontend: http://localhost:8501
GET /
- Health checkGET /clubs
- Get all clubsGET /clubs/{club_id}
- Get specific club detailsGET /groups
- Get club groupsGET /rankings/overall
- Overall rankingsGET /rankings/group/{group_name}
- Group rankings
GET /analytics/social-media/{club_id}
- Social media analyticsGET /analytics/events/{club_id}
- Event analyticsGET /analytics/whatsapp/{club_id}
- WhatsApp analyticsGET /voting/summary
- Voting results summaryGET /dashboard/stats
- Dashboard statistics
The system processes data from multiple sources:
- Club Information: Basic club details and metadata
- Social Media Metrics: Instagram, LinkedIn engagement data
- Event Data: Club events and participation metrics
- WhatsApp Analytics: Group activity and engagement
- Voting Data: Student voting results
- Scraped Data: Additional social media insights
- Social media engagement scores
- Event impact assessments
- Community engagement metrics
- Collaboration scores
- Voting results integration
- Real-time data visualization with Plotly
- Responsive design with custom CSS
- Tabbed interface for organized content
- Error handling and user feedback
- Club performance metrics
- Comparative analysis tools
- Trend visualization
- Export capabilities
- FastAPI: Modern, fast web framework
- Pydantic: Data validation and settings management
- Python 3.9+: Core language
- JSON: Data storage format
- Streamlit: Interactive web app framework
- Plotly: Interactive charts and visualizations
- Pandas: Data manipulation and analysis
- Requests: HTTP client for API communication
- Backend: Add new endpoints in
main.py
and services inservices/
- Frontend: Add new pages or components in
app.py
- Data Models: Update models in
models/club.py
- Update JSON files in
backend/data/
directory - Restart backend to load new data
- Modify CSS in
app.py
for styling changes - Update API endpoints in frontend for new backend features
- Add new visualization types using Plotly
- Backend not starting: Check if port 8000 is available
- Frontend connection error: Ensure backend is running first
- Data not loading: Verify JSON files in
backend/data/
- Package conflicts: Use virtual environment
- issue is i have scrapped the data and stored BEcause in the json as using the selenium to scrap insta and linkedin for the every request it will block the ip
- assigning the weight weight assigning is the issue i have faced
- official whatsapp group i ahve scraped
- used apify for the instgram post ,comments and likecount used Apify to scrapy