A modern ASP.NET Core Web API powering a university-focused Lost & Found platform.
Built to help students report, discover, verify, and recover lost items through real-time communication, intelligent matching, and secure claim verification.
- JWT Authentication
- Email Verification
- Secure User Registration & Login
- Create Lost Item Posts
- Create Found Item Posts
- Categorize Posts
- Tag & Search Items
- Post Status Tracking
- Match Lost Items with Found Items
- Similarity Scoring
- Match Approval Workflow
- Recovery Tracking
- SignalR Real-Time Messaging
- Chat Between Finder and Owner
- Instant email notifications
- Ownership Verification Process
- Pickup Request Workflow
- Holder Confirmation
- Recovery Status Management
- In-Web Notifications
- Real-Time Updates
- Match Alerts
- Pickup Request Alerts
- ASP.NET Core 8
- C#
- Entity Framework Core
- SQL Server
- SignalR
- JWT Bearer Authentication
- ASP.NET Identity
- SQL Server
- SignalR Hub
- SMTP Email Sender
- Git
- GitHub
- GitHub Actions (CI/CD)
- Azure App Service
LostFound_API
β
βββ LostFound_API/ β API Layer
β βββ Controllers/
β βββ DTOs/
β βββ Program.cs
β βββ appsettings.json
β
βββ ObjectBusiness/ β Domain Models & DbContext
β βββ FBLADbContext.cs
β βββ Users.cs
β βββ Posts.cs
β βββ Match.cs
β βββ Chat.cs
β βββ ...
β
βββ DataAccess/ β Data Access Layer
β βββ UsersDAO.cs
β βββ PostDAO.cs
β βββ MatchDAO.cs
β βββ ...
β
βββ Repository/ β Business/Data Repository Layer
β βββ Interfaces
β βββ Implementations
β βββ Repository Pattern
β
βββ Services/ β External Services
β βββ EmailSender.cs
β βββ HolderReminderService.cs
β
βββ SignalRLayer/ β Real-Time Communication
βββ SystemHub.cs
This project follows a layered architecture:
Controller
β
βΌ
Repository
β
βΌ
DAO
β
βΌ
Entity Framework Core
β
βΌ
SQL Server
Handle HTTP requests and responses.
Contains business rules and application logic.
Handles direct database interactions.
Contains entities and DbContext.
External services such as email sending and scheduled reminders.
Handles real-time communication between users.
- Users
- Roles
- VerificationCode
- Posts
- CategoryPost
- Match
- Chat
- MessageChat
- PickupRequest
- TransferRequest
- StatusRequest
- Notifications
- Student
Student loses item
β
βΌ
Create Lost Post
β
βΌ
System Searches Matches
β
βΌ
Potential Match Found
β
βΌ
Chat Between Users
β
βΌ
Verification Process
β
βΌ
Pickup Request
β
βΌ
Item Recovered
POST /api/auth/register
POST /api/auth/login
POST /api/auth/verify-emailGET /api/users
GET /api/users/{id}
PUT /api/users/{id}
DELETE /api/users/{id}GET /api/post
POST /api/post
PUT /api/post
DELETE /api/postGET /api/match
POST /api/matchGET /api/messagechat
POST /api/messagechatGET /api/notificationPOST /api/pickuprequest
GET /api/pickuprequestgit clone https://github.com/yourusername/CampusLostFoundAPI.gitcd CampusLostFoundAPIdotnet restoredotnet ef database updatedotnet runappsettings.json.
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"MyConnection": "Data Source=DESKTOP-A6BFNON\\ANSQLSERVER;Database=FBLADB;User Id=sa;Password=Baoan123.cntt;TrustServerCertificate=true;Encrypt=false;"
//"MyConnection": "Data Source=my-sqlserver.cnoi0okmult3.ap-southeast-2.rds.amazonaws.com,1433;Database=FBLADB;User Id=admin;Password=Baoan123.cntt;TrustServerCertificate=true;Encrypt=false;"
},
"AzureSignalR": {
"ConnectionString": "Endpoint=https://lostandfound-signalr.service.signalr.net;AccessKey=5H02R43oOOa5BOEnT0vq477WDuiU2aQYtcvs53CGsEoKqzgxdF93JQQJ99CAAC1i4TkXJ3w3AAAAASRSY1Xq;Version=1.0;"
}, // Config to use Azure SignalR service
"JwtConfig": {
//"Issuer": "https://localhost:44318/",
"Issuer": "https://lost-and-found-cqade7hfbjgvcbdq.centralus-01.azurewebsites.net/",
//"Audience": "http://localhost:5173/",
"Audience": "https://back2me.vercel.app/",
"Key": "4d94bf39cf0365286d7bc29a6e34a929c3621a37763160fa7652793a2e1650a817fac5eeccd849e033ddb55061ee00481b9e2df91e6fc1a61c2d36cdf3370f88",
"TokenValidityMins": 720 // 12 hours
}
}dotnet builddotnet testGitHub Actions automatically:
- Restore Dependencies
- Build Solution
- Run Unit Tests
- Validate Pull Requests
Example workflow:
Restore Dependencies
Build Solution
Run Tests- AI Image Matching
- OCR Text Recognition
- Mobile Application
- QR Code Recovery System
- Campus Admin Dashboard
- Analytics & Reporting
- Multi-Campus Support
- Azure Blob Storage Integration
We welcome passionate students, builders, and aspiring contributors who want to grow with the project.
To maintain quality and ensure the right fit, contributors join through a structured pathway rather than direct public pull requests.
Application Form β Conversation / Interview β Trial Task or Internship Stage β Contributor β Lead
-
Application Form Submit the application form to express your interest and share your background, skills, and preferred role.
-
Conversation / Interview Shortlisted applicants will be invited to a conversation or interview to discuss experience, goals, communication, and team fit.
-
Trial Task / Internship Stage Applicants may complete a trial task or participate in a short internship-style evaluation period to demonstrate technical ability, collaboration, and ownership.
-
Contributor Candidates who successfully complete the evaluation stage may join the project as contributors.
-
Lead Contributors who consistently show strong performance, initiative, communication, and impact may be considered for lead roles based on their level and readiness.
Note: We currently do not accept direct unsolicited pull requests. If youβd like to contribute, please start with the application process.
- Fork Repository
- Create Feature Branch
git checkout -b feature/new-feature- Commit Changes
git commit -m "feat: add new feature"- Push Branch
git push origin feature/new-feature- Open Pull Request
Quoc Bao An Nguyen
Software Engineering Student
- ASP.NET Core
- SQL Server
- Azure
- React
- SignalR
- AI-Powered Applications
GitHub: https://github.com/JasonPG2007
β If you found this project useful, consider giving it a star.