Projects · 1 flagship + 5 AWS builds
Ship one real app, end to end.
Not a tutorial you follow — an application you own. CineList runs on a live dev server with a real IDE; each module is verified before the next unlocks. When it's deployed, it goes on your resume with a link that works.
Start module 1~7 hours total. Pick it up where you left off.
Projects / CineList8 modules · ~7 hlive dev server
1
Build the screens Reactverified
2
Multi-page app React Routerverified
3
Build the API Node + Expressverified
4
Connect front & back fetchverified
5
Add a database MongoDBverified
6
Login & security JWTverified
7
Image uploads Multerin progress
8
Deploy it live Dockernext
https://m7-7f21.vm.deployu.ai:5173 module 7
Module 7 · Image uploads
What a module actually asks of you.
Each module is 45–60 minutes with four to six verified tasks. This one: accept a real image with Multer, store it, serve it, show it in the React UI. The verifier uploads a file through your endpoint and checks it comes back.
task 3 / 5 server/routes/movies.js
1const upload = multer({ dest: 'uploads/', limits: { fileSize: 2e6 } })
2
3router.patch('/:id/poster', auth, upload.single('poster'), async (req, res) => {
4 const movie = await Movie.findByIdAndUpdate(req.params.id,
5 { poster: `/uploads/${req.file.filename}` }, { new: true })
6 res.status(201).json(movie)
7})
You write it in the real projectThe whole repo is there — your modules 1–6 code, not a fresh starter.
verify module 7 · task 3
PATCH /api/movies/:id/poster accepts multipartuploaded fixture.png (180 KB)
passResponse 201 with poster path/uploads/5f1c…png
passFile is served backGET /uploads/5f1c…png → 200, image/png
passRejects > 2 MB413 on 3 MB fixture
passChecked by doing, not by reading your codeThe verifier exercises your running server. Style doesn't matter; behaviour does.
Project labs
Five one-sitting builds on a real AWS account.
Smaller in scope, still resume-worthy. Each one ends with something running that you can screenshot, link or demo.