├── 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 | ![](./blogging-app.drawio.svg) 2 | -------------------------------------------------------------------------------- /blogging-app/blogging-app.drawio.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
follower
follower
followee
followee
Users
Users
Articles
Articles
Comments
Comments
author
author
article
article
commenter
commenter
Follow
Follow
Like
Like
Text is not SVG - cannot display
-------------------------------------------------------------------------------- /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 | --------------------------------------------------------------------------------