- Brandon Moore - Software Developer
- Christian Felix - Software Developer
- John Liu - Software Developer
- Kurt Loban - Software Developer
Scrumptious is a web application that facilitates project management using a Scrum-based approach with the aid of Sticky Notes and Sticky Boards. The frontend of the application is developed using React and is organized into separate directories for Sticky Notes, Sticky Boards, and Accounts.
The backend of the application is built using FastAPI and MongoDB to maintain the directory structure. Additionally, the application uses microservices architecture by leveraging Docker.
Scrumptious has a router directory that defines the routes for the API endpoints, a queries directory that defines the queries for the MongoDB database, and a test directory that contains test files for the API.
As the database used by Scrumptious is MongoDB, it does not require the use of a pre-built migrations folder. However, asynchronous functions are still utilized on the frontend of the application.
- Create and manage Sticky Notes and Sticky Boards.
- Assign Sticky Notes to various categories (backlog, todo, doing, review, and done).
- Set priorities and deadlines for Sticky Notes and Sticky Boards.
- Invite other users to collaborate on a Sticky Board.
- Assign users to Sticky Notes
- Email notifications when users are added to a Sticky Note or Sticky Board.
Be sure to have Docker Destkop downloaded and running.
1. Open your terminal, change to the directory folder where the project will be cloned.
2. In your terminal, type: git clone https://gitlab.com/team-scrappy/scrum-ptious.git
3. Navigate to the project directory.
To provide environment variables for your setup that should not live in the docker-compose.yml file, use the .env file. To set this up:
1. Copy the example.env file to the .env file:
cp example.env .env
2. Replace XXXXXXXXXXXX in the Sendgrid_api_key variable with your actual SendGrid API key within the .env file:
Sendgrid_api_key=Your_API_Key
After you have cloned your Repository and are in the correct directory initializate the following actions within your terminal:
1. docker volume create scrumptious-mongo-data
2. docker-compose build
3. docker-compose up
Upon completion of the previous commands you will see all four Docker containers up and running.
- email: str
- password: str
- first_name: str
- last_name: str
- board_name: str
- description: str
- priority: int
- start_date: datetime
- deadline: datetime
- account: list[str]
- backlog: list[str]
- todo: list[str]
- doing: list[str]
- review: list[str]
- done: list[str]
- subject: str
- content: Optional[str]
- priority: int
- category: str
- start_date: datetime
- deadline: datetime
- account: list[str]
- stickyboard: str
Action | URL |
---|---|
POST an account |
http://localhost:3000/accounts |
GET all accounts |
http://localhost:3000/accounts |
DELETE an account |
http://localhost:3000/accounts/{account_id} |
POST an account:
{
"email": "test_account@test.com",
"password": "test_password",
"first_name": "Test_First_Name",
"last_name": "Test_Last_Name"
}
GET all accounts:
[
{
"email": "test_account@test.com",
"first_name": "Test_First_Name",
"last_name": "Test_Last_Name",
"id": "644b0597b0b66163a004216a"
}
]
Action | URL |
---|---|
POST a stickyboard |
http://localhost:3000/stickyboard |
GET all stickyboards |
http://localhost:3000/stickyboard |
GET all stickies under categories of a stickyboard |
http://localhost:3000/{stickyboard_id}/stickies |
GET stickies under a stickyboards |
http://localhost:3000/stickyboard/{stickyboard_id}/sticky |
PUT a stickyboard |
http://localhost:3000/stickyboard/{stickyboard_id} |
DELETE a stickyboard |
http://localhost:3000/stickyboard/{stickyboard_id} |
POST a stickyboard:
{
"board_name": "Test_Stickyboard_Board_Name",
"description": "Test_Stickyboard_Description",
"priority": 1,
"start_date": "2023-04-27T23:01:04.911Z",
"deadline": "2023-04-27T23:01:04.911Z",
"account": [
"644b0597b0b66163a004216a"
],
"backlog": [],
"todo": [],
"doing": [],
"review": [],
"done": []
}
GET all stickyboards:
[
{
"board_name": "Test_Stickyboard_Board_Name",
"description": "Test_Stickyboard_Description",
"priority": 1,
"start_date": "2023-04-27T23:01:04.911000",
"deadline": "2023-04-27T23:01:04.911000",
"account": [
"644b0597b0b66163a004216a"
],
"backlog": [],
"todo": [],
"doing": [],
"review": [],
"done": [],
"id": "644b05d6b0b66163a004216b"
}
]
GET all stickies under categories of a stickyboard:
{
"backlog": [],
"todo": [],
"review": [],
"doing": [
{
"subject": "Test_Sticky_Subject",
"content": "Test_Sticky_Content",
"priority": 1,
"category": "doing",
"start_date": "2023-04-27T22:25:24.238000",
"deadline": "2023-04-27T22:25:24.238000",
"account": [
"644b0597b0b66163a004216a"
],
"append": false,
"stickyboard": "644b05d6b0b66163a004216b",
"id": "644b06dab0b66163a004216c"
}
],
"done": []
}
GET stickies under a stickyboard:
[
{
"subject": "Test_Sticky_Subject",
"content": "Test_Sticky_Content",
"priority": 1,
"category": "doing",
"start_date": "2023-04-27T22:25:24.238000",
"deadline": "2023-04-27T22:25:24.238000",
"account": [
"644b0597b0b66163a004216a"
],
"append": false,
"stickyboard": "644b05d6b0b66163a004216b",
"id": "644b06dab0b66163a004216c"
}
]
PUT a stickyboard:
{
"board_name": "Test_Stickyboard_Board_Name_Update",
"description": "Test_Stickyboard_Description_Update",
"priority": 1,
"start_date": "2023-04-27T23:01:04.911Z",
"deadline": "2023-04-27T23:01:04.911Z",
"account": [
"644b0597b0b66163a004216a"
],
"backlog": [],
"todo": [],
"doing": [],
"review": [],
"done": []
}
Action | URL |
---|---|
POST a sticky under a stickyboard |
http://localhost:3000/{stickyboard_id}/sticky |
GET all stickies |
http://localhost:3000/sticky |
PUT a sticky |
http://localhost:3000/sticky/{sticky_id} |
DELETE a sticky |
http://localhost:3000/sticky/{sticky_id} |
POST a sticky under a stickyboard:
{
"subject": "Test_Sticky_Subject",
"content": "Test_Sticky_Content",
"priority": 1,
"category": "doing",
"start_date": "2023-04-27T22:25:24.238Z",
"deadline": "2023-04-27T22:25:24.238Z",
"account": [
"644b0597b0b66163a004216a"
],
"append": false
}
GET all stickies:
[
{
"subject": "Test_Sticky_Subject",
"content": "Test_Sticky_Content",
"priority": 1,
"category": "doing",
"start_date": "2023-04-27T22:25:24.238000",
"deadline": "2023-04-27T22:25:24.238000",
"account": [
"644b0597b0b66163a004216a"
],
"append": false,
"stickyboard": "644b05d6b0b66163a004216b",
"id": "644b06dab0b66163a004216c"
}
]
PUT a sticky:
{
"subject": "Test_Sticky_Subject_Update",
"content": "Test_Sticky_Content_Update",
"priority": 1,
"category": "doing",
"start_date": "2023-04-27T22:25:24.238Z",
"deadline": "2023-04-27T22:25:24.238Z",
"account": [
"644b0597b0b66163a004216a"
],
"stickyboard": "644b05d6b0b66163a004216b"
}