This project is a Golang and MongoDB-based clone of the popular "Trello Board" project management software. It offers a set of secure and authenticated endpoints for user registration, login, and seamless management of boards, lists, and cards. With a user-friendly interface and robust functionality, this clone provides teams with a familiar and efficient platform to collaborate, organize tasks, and monitor project progress in a Trello-style environment.
- Go
- MongoDB
Request:
{
"email": "user@example.com",
"password": "userpassword"
}
Response:
{
"id": "user_id",
"email": "user@example.com"
}
Request:
{
"email": "user@example.com",
"password": "userpassword"
}
Response:
{
"token": "jwt_token"
}
Note: All board endpoints require authentication.
Response:
{
"id": "board_id",
"user_id": "user_id",
"title": "Board Title",
"lists": [
{
"id": "list_id",
"title": "List Title",
"position": 1,
"cards": ["card_id1", "card_id2"],
"card_details": [
{
"id": "card_id1",
"title": "Card Title",
"description": "Card Description",
"position": 1
},
{
"id": "card_id2",
"title": "Card Title",
"description": "Card Description",
"position": 2
}
]
}
]
}
Request:
{
"title": "Board Title"
}
Response:
{
"id": "board_id",
"user_id": "user_id",
"title": "Board Title",
"lists": []
}
Response:
{
"message": "Board deleted successfully"
}
Request:
{
"title": "List Title",
"position": 1
}
Response:
{
"id": "list_id",
"title": "List Title",
"position": 1,
"cards": [],
"card_details": []
}
Request:
{
"title": "New List Title"
}
Response:
{
"id": "list_id",
"title": "New List Title",
"position": 1,
"cards": [],
"card_details": []
}
Response:
{
"message": "List deleted successfully"
}
Request:
{
"list_id": "list_id",
"board_id": "board_id",
"user_id": "user_id",
"title": "Card Title",
"description": "Card Description",
"position": 1
}
Response:
{
"id": "card_id",
"list_id": "list_id",
"board_id": "board_id",
"user_id": "user_id",
"title": "Card Title",
"description": "Card Description",
"position": 1
}
Request:
{
"title": "New Card Title",
"description": "New Card Description",
"position": 2
}
Response:
{
"id": "card_id",
"list_id": "list_id",
"board_id": "board_id",
"user_id": "user_id",
"title": "New Card Title",
"description": "New Card Description",
"position": 2
}
Request:
{
"list_id": "new_list_id",
"position": 3
}
Response:
{
"id": "card_id",
"list_id": "new_list_id",
"board_id": "board_id",
"user_id": "user_id",
"title": "Card Title",
"description": "Card Description",
"position": 3
}
Response:
{
"message": "Card deleted successfully"
}
type User struct {
ID primitive.ObjectID `bson:"_id,omitempty" json:"id"`
Email string `bson:"email" json:"email" validate:"required"`
Password []byte `bson:"password" json:"password" validate:"required"`
}
type Board struct {
ID primitive.ObjectID `bson:"_id,omitempty" json:"id"`
UserID string `bson:"user_id" json:"user_id" validate:"required"`
Title string `bson:"title" json:"title" validate:"required"`
Lists []List `bson:"lists" json:"lists" validate:"required"`
}
type List struct {
ID primitive.ObjectID `bson:"_id,omitempty" json:"id"`
Title string `bson:"
}
type Card struct {
ID primitive.ObjectID `bson:"_id,omitempty" json:"id"`
ListID primitive.ObjectID `bson:"list_id" json:"list_id" validate:"required"`
BoardID primitive.ObjectID `bson:"board_id" json:"board_id" validate:"required"`
UserID string `bson:"user_id" json:"user_id" validate:"required"`
Title string `bson:"title" json:"title" validate:"required"`
Description string `bson:"description" json:"description"`
Position int `bson:"position" json:"position"`
}