Technologies 🧑🏻💻🛠️
MVP Features 💪💪
- [x] Authentication with email/password
- [x] Secure APIs with JWT authentication
- [x] Account creation with email verification
- [x] Publication to ask for help with a subject or topic
- [x] Add comments to publications
- [x] Mark a publication as resolved and stop accepting comments
- [x] Real-time private chat
- [ ] Advanced search function with filters by subject/topic
- [ ] Send notifications when users receive replies to their publications or private messages
- [ ] File sharing (pdf, img) in publications and private chat
Database structure 💾 🗂️
Collection Users
📄
{
"_id": "ObjectId",
"email": "String",
// Password hash
"password": "String",
"name": "String",
"dateOfBirth": "Date",
"isVerified": "Boolean"
}
Collection Publications
📄
{
"_id": "ObjectId",
"userId": "ObjectId",
"title": "String",
"content": "String",
"attachments": [
{
"url": "String",
// [pdf, image, ...]
"type": "String"
}
],
"commentsCount": "Number",
"isDiscussionOpen": "Boolean",
// [Mathematics, Physics, French, ...]
"tags": ["String"]
}
Collection Comments
📄
{
"_id": "ObjectId",
"publicationId": "ObjectId",
"userId": "ObjectId",
"content": "String"
}
Collection Chats
📄
{
"_id": "ObjectId",
"participants": ["ObjectId", "ObjectId"],
"messages": ["ObjectId", "ObjectId", "..."]
}
Collection Messages
📄
{
"_id": "ObjectId",
"senderId": "ObjectId",
"content": "String",
"read": "Boolean"
}
Collection Notifications
📄
{
"_id": "ObjectId",
"userId": "ObjectId",
// [comment, message, ...]
"type": "String",
// ID of the post or message concerned
"referenceId": "ObjectId",
"message": "String",
"isRead": "Boolean"
}