How bultut-yegon/funding_backend works
Funding Platform is a FastAPI service for discovering funding opportunities and matching them to user profiles. Users register, maintain profiles, browse and save opportunities, and receive recommendations; administrators have separate management endpoints. The app also schedules opportunity collection and user notifications. The excerpts show application startup and router registration, plus authentication, enrichment, and notification behavior. Other API and service connections are based on the source index, so uncertain internal links are omitted or marked unverified.
Main entry points: main.py FastAPI app · database.py SQL database · auth.py Authentication · scheduler.py Task scheduler
Components 28
API entry
- FastAPI app
app/main.py
User features
- Authentication
app/api/auth.py - Token security
app/core/security.py - User profiles
app/api/profile.py - Bookmarks
app/api/bookmarks.py - Notifications API
app/api/notifications.py - Analytics API
app/api/analytics.py - Proposals API
app/api/proposals.py - Admin API
app/api/admin.py
Opportunity matching
- Opportunity browsing
app/api/opportunities.py - Recommendations API
app/api/recommendations.py - Predictor API
app/api/predictor.py - Recommendation engine
app/ml/recommender.py - Classifier
app/ml/classifier.py
Background operations
- Opportunity scraper
app/services/scraper.py - Opportunity enrichment
app/ml/enrichment.py - Task scheduler
app/services/scheduler.py - Email notifications
app/services/notification_service.py - Reset email
app/services/email_service.py
Persistence
- SQL database
app/db/database.py - User records
app/models/user.py - User sessions
app/models/user_session.py - Opportunity records
app/models/opportunity.py - Profile records
app/models/profile.py - Bookmark records
app/models/bookmark.py - Notification records
app/models/notification.py - Recommendation records
app/models/recommendation.py
Other components
- API client
Connections 26
- API client → FastAPI app: sends requests
app/main.py - FastAPI app → Authentication: registers router
app/main.py - FastAPI app → Opportunity browsing: registers router
app/main.py - FastAPI app → Recommendations API: registers router
app/main.py - FastAPI app → Notifications API: registers router
app/main.py - FastAPI app → User profiles: registers router
app/main.py - FastAPI app → Bookmarks: registers router
app/main.py - FastAPI app → Proposals API: registers router
app/main.py - FastAPI app → Admin API: registers router
app/main.py - FastAPI app → Predictor API: registers router
app/main.py - FastAPI app → Analytics API: registers router
app/main.py - FastAPI app → Task scheduler: starts scheduler
app/main.py - Authentication → Token security: uses token helpers
app/api/auth.py - Authentication → Reset email: sends reset email
app/api/auth.py - Opportunity scraper → Opportunity enrichment: enriches listings
app/services/scraper.py - Email notifications → Recommendation engine: gets matches
app/services/notification_service.py - Email notifications → Notification records: creates notifications
app/services/notification_service.py - Task scheduler → Opportunity scraper: uses scraper
app/services/scheduler.py - Task scheduler → Email notifications: uses notifier
app/services/scheduler.py - SQL database → Opportunity records: provides ORM base
app/models/opportunity.py - SQL database → Profile records: provides ORM base
app/models/profile.py - SQL database → User records: provides ORM base
app/models/user.py - SQL database → User sessions: provides ORM base
app/models/user_session.py - SQL database → Bookmark records: provides ORM base
app/models/bookmark.py - SQL database → Notification records: provides ORM base
app/models/notification.py - SQL database → Recommendation records: provides ORM base
app/models/recommendation.py