Tangy is building your next step
Shaping the lesson around what you want to make.
Tangy is building your next step
Shaping the lesson around what you want to make.
Computer Science
Turn your current HTML and early React experience into a small full-stack to-do app. You will build the server in Node.js with Express, connect a browser interface with vanilla JavaScript, and finish with a project that can add, display, complete, and delete tasks.
Shape the app before the server
4 lessonsUse the learner's existing HTML and CSS strengths to create the visible task-list shell and define the small data shape the server will later provide. This module runs independently so the project is useful before the reference app exists.
Make the Express server useful
5 lessonsAdd the Node.js runtime and Express one controlled step at a time, first serving the already-built frontend and then exposing read and write routes against in-memory task data.
Connect the browser to the API
4 lessonsReplace the static demo behavior with real browser-to-server interactions, keeping the interface understandable while the learner learns the request lifecycle.
Polish, verify, and present the app
3 lessonsTurn the working prototype into a dependable small project by checking the important behaviors, tightening the interface, and documenting how another person can run it.
Public lesson
Before building React components or routes, decide what one to-do is and what the user can do with it. This gives the interface and API the same target.
Imagine the app showing one item:
Buy groceries — incomplete
What is the minimum information the app needs to remember?
For this first version, use exactly three properties:
id: uniquely identifies the itemtext: what the item sayscompleted: whether it is finishedTasks
Create a short design note in your project. For example, add docs/todo-contract.md.
# To-do contract
## Task object
```js
{
id: /* choose the type and an example value */,
text: /* example task text */,
completed: /* true or false */
}
# To-do contract
## Task object
```js
{
id: /* choose the type and an example value */,
text: /* example task text */,
completed: /* true or false */
}
id.text.completed value.Tasks
Now replace every comment and blank line with your own decisions. Keep the object to those three properties; do not add dates, categories, priorities, or users yet.
Use these four actions:
Tasks
For each action, write a method and path that fit your app. You might choose paths such as /api/tasks, but decide the exact design yourself.
Tasks
Your notes should make the request and result unambiguous. For example, for the completion action, specify:
completed: true or completed: false,Tasks
Do the same for adding, viewing, and deleting. The goal is not to write server code yet; it is to remove the guesswork that would otherwise appear while building components.
Open docs/todo-contract.md and inspect it against these questions:
Tasks
id?Tasks
If any answer is “not yet,” revise the note before moving on. The finished file is your API-and-interface checklist for the next implementation lesson.
4 modules · 16 lessons
Shape the app before the server
Make the Express server useful
Connect the browser to the API
Polish, verify, and present the app
Learn by building your own version.
Remix this public project to open the workspace, follow the guided build, and let the AI mentor teach you through the work instead of doing it for you.