├── blogging-app
├── API.md
├── README.md
├── SCHEMA.md
└── blogging-app.drawio.svg
├── task-manager
├── API.md
└── README.md
└── ticketing-system
└── README.md
/blogging-app/API.md:
--------------------------------------------------------------------------------
1 | # Blogging App
2 |
3 | ## JSON Entities
4 |
5 | ### User
6 |
7 | {
8 | "id": 31,
9 | "username": "arnavg",
10 | "email": "arnav@blog.com",
11 | "password": "xxxxxxxx",
12 | "authToken": "dakjghadlghadlghladhgkgdklgladkgjadlkgd"
13 | "bio": "writes really good articles!",
14 | "image": "https://imgur.com/ahkbtqe.png"
15 | }
16 |
17 | ### Profile
18 |
19 | {
20 | "username": "arnavg",
21 | "bio": "writes really good articles!",
22 | "image": "https://imgur.com/ahkbtqe.png"
23 | }
24 |
25 | ### Article
26 |
27 | {
28 | "id": 134,
29 | "title": "How the stock market fell in 2022",
30 | "slug": "how-stock-market-fell-2022"
31 | "subtitle": "An article about how the stock market had a crash in 2022",
32 | "body" : "This is an article about ..... stock market .... 2022 .........",
33 | "createdAt": "2022-02-06 03:40:55",
34 | "tags" : ["finance", "stocks"]
35 | }
36 |
37 |
38 | ### Comment
39 |
40 | {
41 | "id": 1344,
42 | "title": "great article",
43 | "body" : "this was a great article, loved reading it!",
44 | "createdAt: "2022-02-07 03:40:55"
45 | }
46 |
47 | ### Errors
48 | ```
49 | {
50 | "message": "User with username: arnav123 not found"
51 | }
52 | ```
53 |
54 | ## API Endpoints
55 |
56 | ### `POST /users`
57 | create a new user
58 |
59 | ### `POST /users/login`
60 |
61 | ### `GET /profiles`📄
62 |
63 | ### `GET /profiles/{username}`
64 |
65 |
66 | ### `GET /articles` 📄
67 | get all articles (default page size 10)
68 | available filters
69 |
70 | - `/articles?tag=stocks`
71 | - `/articles?author=arnavg`
72 | - `/articles?page=3&size=10`
73 |
74 | ### `GET /articles/{article-slug}`
75 |
76 | ### `POST /articles` 🔐
77 | create a new article
78 |
79 | ### `PATCH /articles/{article-slug}` 🔐👤
80 | edit an article
81 |
82 |
83 | ### `GET /article/{article-slug}/comments` 📄
84 | get all comments of an article
85 |
86 | ### `POST /article/{article-slug}/comments` 🔐
87 |
88 | ### `DELETE /article/{article-slug}/comments/{comment-id}` 🔐👤
89 |
90 |
91 |
--------------------------------------------------------------------------------
/blogging-app/README.md:
--------------------------------------------------------------------------------
1 | # BLOGGING APP
2 |
3 | ## Problem Statement
4 | Make a web application for blogging which has built in capabilities to handle various users.
5 |
6 | ---
7 |
8 | ## Requirements
9 | - CRUD capabilities for **USERS**
10 | - CRUD capabilities for **BLOGS** which would be scoped under a **USER**. *i.e. only the user which creates a blog would be able to modify/delete it*
11 | - All **USERS** should be able to view **BLOGS** which have been posted
12 | - A **USER** should be able to write a **BLOG** and post it for everyone to see
13 | - A **USER** should be able to follow another **USER** so that their **BLOGS** have a higher priority on the former **USER**'s feed
14 | - **USERS** should be able to **COMMENT** under a **BLOG**. *These comments would be public*
15 | - **USERS** should be able to LIKE / UNLIKE a **BLOG**
16 |
17 | ---
18 |
19 | ## Basic Flow
20 | ### *Subject to changes basis of how you want the overall UX to be*
21 | 1. An initial signup/signin form to create a user profile on the application
22 | 2. A main feed where a user can see cards for various blogs. *Blogs from users which the current user has followed would have a higher priority in the feed*
23 | 3. A page which opens on clicking a blog card which contains the complete contents of the blog
24 | 4. An area to add comments and read other comments about the current blog
25 | 5. An editor where user can create blogs to be posted
26 | 6. An editor where user can edit the already posted blogs
27 | 7. Capability to view another user's profile and follow/unfollow them
28 |
29 | ---
30 |
31 | ## Expectations from Submission
32 | ### *Points which will be focussed on during evaluation*
33 | - The code should be working and demonstrable
34 | - Code should be written in a readable fashion using best practices
35 | - Code should be optimised on various fronts and hardcoding logic should be avoided
36 | - Kindly add a proper readme to your project for easy navigation and installation
37 | - The overall UI should be easy to navigate and have good UX
38 |
39 | ---
40 |
41 | ## Good to haves (Optional Requirements)
42 | ### *Try to work on these features once all the required features are complete*
43 | - Having the capability to add blogs to drafts before posting them
44 | - Having the capability to schedule when a blog would get posted
45 | - Sending notifications to all users who follow a current user when the current user posts a new blog or makes changes to an existing one
46 | - Capability to sort feed via time of posting, topics etc.
47 | - Making UI responsive
48 | - Ability to club various blogs together under a bucket (topic) -> create a sequence of blogs
49 |
--------------------------------------------------------------------------------
/blogging-app/SCHEMA.md:
--------------------------------------------------------------------------------
1 | 
2 |
--------------------------------------------------------------------------------
/blogging-app/blogging-app.drawio.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/task-manager/API.md:
--------------------------------------------------------------------------------
1 | # Task Manager App
2 |
3 | ## JSON Entities
4 |
5 | ### Task
6 | {
7 | "id": 31,
8 | "title": "I am a task!",
9 | "description": "This is the task description",
10 | "deadline": "dd/mm/yyyy",
11 | "notes": [
12 | {
13 | "title": "random note title",
14 | "body": "I am the note body"
15 | },
16 | {
17 | "title": "random note title",
18 | "body": "I am the note body"
19 | },
20 | {
21 | "title": "random note title",
22 | "body": "I am the note body"
23 | }
24 | ],
25 | "completed": false
26 | }
27 |
28 | ## API Endpoints
29 |
30 | ### `POST /tasks`
31 | Create a new task
32 |
33 | ### `GET /tasks`
34 | Get all tasks
35 | Available filters -
36 | - `/tasks?completed=true/false`
37 |
38 | ### `GET /tasks/{task_id}`
39 | Get the details of a particular task including notes
40 |
41 | ### `PATCH /tasks/{task_id}`
42 | Edit a task - Add / Remove notes from the task. Mark a task completed.
43 |
44 | ### `PATCH /tasks/{task_id}`
45 |
46 | ### `DELETE /tasks/{task_id}`
47 | Delete a particular task
48 |
49 | ---- ADDITIONAL TASKS (BONUS) -----
50 |
51 | ### `GET /tasks/{task_id}/notes`
52 | Fetch all the notes under a particular task
53 |
54 | ### `POST /tasks/{task_id}/notes`
55 | Create a new note under the task with given task id
56 |
57 | ### `DELETE /tasks/{task_id}/notes/{notes_id}`
58 | Delete a note
59 |
--------------------------------------------------------------------------------
/task-manager/README.md:
--------------------------------------------------------------------------------
1 | # TASK MANAGER
2 |
3 | ## Problem Statement
4 | Design and develop an in memory (*NO DATABASE*) web application for managing personal tasks and notes within a given task.
5 |
6 | ---
7 |
8 | ## Requirements
9 | - CRUD capabilities for tasks and for **NOTES** within a **TASK**. - *Notes can be considered as descriptors to that task*
10 | - A **TASK** should be able to have multiple **NOTES** linked to it. Initially, a not can only be linked to one task. - *i.e. a TASK has many NOTES*
11 | - A simple UI for the user to be able to view and interact with **TASKS** and **NOTES**
12 |
13 | ---
14 |
15 | ## Basic Flow
16 | ### *Subject to changes basis of how you want the overall UX to be*
17 | 1. Initial page where user can view current tasks and also a form to create a new one along with notes inside it
18 | 2. Capability to click on Edit/Delete buttons against each task for one to be able to Modify/Delete a task
19 | 3. Capability to be able to see notes within a task after clicking on it
20 | 4. Capability to remove or add notes in existing tasks
21 |
22 | ---
23 |
24 | ## Expectations from Submission
25 | ### *Points which will be focussed on during evaluation*
26 | - The code should be working and demonstrable
27 | - Code should be written in a readable fashion using best practices
28 | - Code should be optimised on various fronts and hardcoding logic should be avoided
29 | - There should be no authenticated endpoints for this particular submission
30 | - Kindly add a proper readme to your project for easy navigation and installation
31 |
32 | ---
33 |
34 | ## Good to haves (Optional Requirements)
35 | ### *Try to work on these features once all the required features are complete*
36 | - Adding functionality to have some priority order for tasks and be able to update task priorites
37 | - Adding various tasks to task buckets for easy management
38 | - Support to have email reminders when tasks approach deadlines
39 | - Better UI which is responsive
40 |
--------------------------------------------------------------------------------
/ticketing-system/README.md:
--------------------------------------------------------------------------------
1 | # TICKETING SYSTEM
2 |
3 | ## Problem Statement
4 |
5 | ---
6 |
7 | ## Requirements
8 |
9 | ---
10 |
11 | ## Basic Flow
12 | ### *Subject to changes basis of how you want the overall UX to be*
13 |
14 | ---
15 |
16 | ## Expectations from Submission
17 | ### *Points which will be focussed on during evaluation*
18 | - The code should be working and demonstrable
19 | - Code should be written in a readable fashion using best practices
20 | - Code should be optimised on various fronts and hardcoding logic should be avoided
21 | - Kindly add a proper readme to your project for easy navigation and installation
22 | - The overall UI should be easy to navigate and have good UX
23 |
24 | ---
25 |
26 | ## Good to haves (Optional Requirements)
27 | ### *Try to work on these features once all the required features are complete*
28 |
--------------------------------------------------------------------------------