์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ์๋ฃํ ์๋ก ๊ฑฐ๋ถ์ด๊ฐ ๋ฐ๋ค๋ก ๋์๊ฐ๋ ์ฌ์ ์ ๋ ๋๋ ๊ฒ์ด๋ฏธํผ์ผ์ด์ ๊ธฐ๋ฐ To-Do ์ ํ๋ฆฌ์ผ์ด์
TurtleTrip์ ๋จ์ํ ํ ์ผ ๊ด๋ฆฌ๋ฅผ ๋์ด, ์ฌ์ฉ์์ ์ฑ์ทจ๋ฅผ ๊ฑฐ๋ถ์ด์ ์ฌ์ ์ผ๋ก ์๊ฐํํ์ฌ ์ฌ๋ฏธ์ ์ง์ ๊ฐ๋ฅ์ฑ์ ์ ๊ณตํ๋ ์์ฐ์ฑ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค.
- ์ฒดํฌ๋ฆฌ์คํธ ์งํ๋ฅ = ๊ฑฐ๋ถ์ด์ ์ฌ์ ์งํ๋
- ํ ์ผ์ ์๋ฃํ ์๋ก ๊ฑฐ๋ถ์ด๊ฐ ์ก์ง์์ ๋ฐ๋ค๋ก ์ด๋
- ์ค์๊ฐ ์งํ๋ฅ ์ ๋ฐ์ดํธ ๋ฐ ์๊ฐ์ ํผ๋๋ฐฑ
- โ ํ ์ผ ์ถ๊ฐ
- โ ํ ์ผ ์๋ฃ/๋ฏธ์๋ฃ ํ ๊ธ (์๋ก๊ณ ์นจ ์์ด ์ค์๊ฐ ๋ฐ์)
- โ ํ ์ผ ์์
- โ ํ ์ผ ์ญ์
- ๐ ์ค์๊ฐ ์งํ๋ฅ ๊ณ์ฐ: (์๋ฃ๋ ํญ๋ชฉ / ์ ์ฒด ํญ๋ชฉ) ร 100
- ๐ ํ๋ก๊ทธ๋ ์ค ๋ฐ ์ ๋๋ฉ์ด์
- ๐ข ๊ฑฐ๋ถ์ด ์บ๋ฆญํฐ์ ๊ท์ฌ์ด ์ด๋
- ๐ฏ ์งํ๋ฅ ์ฆ๊ฐ ์ ์ ํ ์ ๋๋ฉ์ด์
- ๐ 100% ๋ฌ์ฑ ์ ์์ฃผ ์ถํ ์ฐ์ถ
- ๐ฌ ์ํ์ ๋ฐ๋ฅธ ์๊ฐ์ ํผ๋๋ฐฑ
| ๋ถ๋ฅ | ๊ธฐ์ |
|---|---|
| Backend | Python 3.x, Flask 3.1.2 |
| Frontend | HTML5, CSS3, JavaScript (ES6+) |
| Data | JSON ํ์ผ ๊ธฐ๋ฐ ์ ์ฅ |
| Design | CSS Animations, Responsive Layout |
turtletrip/
โโโ app.py # Flask ๋ฉ์ธ ์ ํ๋ฆฌ์ผ์ด์
โโโ tasks.json # ํ ์ผ ๋ฐ์ดํฐ ์ ์ฅ์
โโโ requirements.txt # Python ์์กด์ฑ ๋ชฉ๋ก
โโโ README.md # ํ๋ก์ ํธ ์๊ฐ
โโโ modules/ # ๋น์ฆ๋์ค ๋ก์ง ๋ชจ๋
โ โโโ data_manager.py # JSON ์
์ถ๋ ฅ ๊ด๋ฆฌ
โ โโโ progress_calculator.py # ์งํ๋ฅ ๊ณ์ฐ
โ โโโ task_validator.py # ์
๋ ฅ๊ฐ ๊ฒ์ฆ
โ
โโโ templates/ # HTML ํ
ํ๋ฆฟ
โ โโโ index.html # ๋ฉ์ธ ํ์ด์ง
โ โโโ edit.html # ํ ์ผ ์์ ํ์ด์ง
โ โโโ background/ # ๋ฐฐ๊ฒฝ HTML, css, python ํ์ผ
โ โโโ background.py
โ โโโ background.css
โ โโโ background.html
โ
โโโ static/ # ์ ์ ํ์ผ
โโโ css/
โ โโโ style.css # ์ ์ญ ์คํ์ผ
โ โโโ turtle.css # ๊ฑฐ๋ถ์ด ์ ๋๋ฉ์ด์
โ โโโ checklist.css # ์ฒดํฌ๋ฆฌ์คํธ UI
โ
โโโ js/
โ โโโ main.js # ๋ฉ์ธ ๋ก์ง (๋น๋๊ธฐ ์ฒ๋ฆฌ)
โ โโโ turtle.js # ๊ฑฐ๋ถ์ด ์ ๋๋ฉ์ด์
์ ์ด
โ โโโ checklist.js # ์ฒดํฌ๋ฆฌ์คํธ ์ธํฐ๋์
โ
โโโ images/
โโโ turtle/ # ๊ฑฐ๋ถ์ด ์ด๋ฏธ์ง ๋ฆฌ์์ค
โโโ background/ # ๋ฐฐ๊ฒฝ ์์ ์ด๋ฏธ์ง
git clone https://github.com/your-team/turtletrip.git
cd turtletrippip install -r requirements.txtpython app.pyhttp://localhost:5000
-
ํ ์ผ ์ถ๊ฐ
- ํ๋จ ์ ๋ ฅ์ฐฝ์ ํ ์ผ์ ์ ๋ ฅํ๊ณ '์ถ๊ฐ' ๋ฒํผ ํด๋ฆญ
-
ํ ์ผ ์๋ฃ ์ฒดํฌ
- ์ฒดํฌ๋ฐ์ค ํด๋ฆญ ์ ์ฆ์ ์งํ๋ฅ ์ ๋ฐ์ดํธ
- ๊ฑฐ๋ถ์ด๊ฐ ์๋์ผ๋ก ์ด๋ํ๋ฉฐ ์ ํ ์ ๋๋ฉ์ด์ ์คํ
-
ํ ์ผ ์์
- ํ ์ผ ์ โฎ ๋ฒํผ ํด๋ฆญ โ '์์ ' ์ ํ
- ๋ด์ฉ ์์ ํ '์ ์ฅ' ๋ฒํผ ํด๋ฆญ
-
ํ ์ผ ์ญ์
- ํ ์ผ ์ โฎ ๋ฒํผ ํด๋ฆญ โ '์ญ์ ' ๋ฒํผ ํด๋ฆญ
-
100% ๋ฌ์ฑ
- ๋ชจ๋ ํ ์ผ ์๋ฃ ์ ๊ฑฐ๋ถ์ด๊ฐ ๋ฐ๋ค์ ๋์ฐฉํ๋ฉฐ ์ถํ ์ฐ์ถ ํ์
- ํ์ด์ง ์๋ก๊ณ ์นจ ์์ด ์ฒดํฌ๋ฐ์ค ์ํ ๋ณ๊ฒฝ
async/await๊ธฐ๋ฐ์ ์์ ์ ์ธ ์๋ฒ ํต์
- CSS transition์ ํ์ฉํ ๋ถ๋๋ฌ์ด ๊ฑฐ๋ถ์ด ์ด๋
- ์งํ๋ฅ ์ฆ๊ฐ ์ ์ ํ ์ ๋๋ฉ์ด์ ์๋ ์คํ
- 100% ๋ฌ์ฑ ์ ํน๋ณ ์ถํ ์ฐ์ถ
- ์ญํ ๋ณ๋ก ๋ถ๋ฆฌ๋ Python ๋ชจ๋
- ๊ธฐ๋ฅ๋ณ๋ก ๋ถ๋ฆฌ๋ JavaScript ํ์ผ
- CSS ํ์ผ ๋ถ๋ฆฌ๋ก ์ ์ง๋ณด์์ฑ ํฅ์
- ํ ์ผ ์ถ๊ฐ โ ์ ์์ ์ผ๋ก ๋ชฉ๋ก์ ํ์
- ์ฒดํฌ๋ฐ์ค ํด๋ฆญ โ ์๋ก๊ณ ์นจ ์์ด ์๋ฃ ํ์
- ์งํ๋ฅ ๋ฐ โ ์ฆ์ ์ ๋ฐ์ดํธ
- ๊ฑฐ๋ถ์ด โ ๋ถ๋๋ฝ๊ฒ ์ด๋
- ์์ ๋ฒํผ โ edit ํ์ด์ง๋ก ์ด๋
- ์์ ์ ์ฅ โ ๋ฉ์ธ์ผ๋ก ๋์์ด
- ์ญ์ ๋ฒํผ โ ์ ์ ์ญ์
- 100% ๋ฌ์ฑ โ ์ถํ ์ฐ์ถ ํ์
๊น๋ ธํ, ๊น์๋น, ๋ฐ์ง์ ์์์ง, ์ก์ฐ์ธ
- ํ๋ก์ ํธ ์ด๊ธฐ ์ค์ ๋ฐ ๊ธฐ๋ณธ ๊ตฌ์กฐ ๊ตฌ์ถ
- JSON ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ค๊ณ
- ์ฒดํฌ๋ฆฌ์คํธ CRUD ๊ธฐ๋ณธ ๊ธฐ๋ฅ ๊ตฌํ
- ์งํ๋ฅ ๊ณ์ฐ ๋ก์ง ๊ตฌํ
- ๊ฑฐ๋ถ์ด ์ด๋ ์ ๋๋ฉ์ด์ ๊ตฌํ
- ํ๋ก๊ทธ๋ ์ค ๋ฐ UI ๊ฐ๋ฐ
- ๋น๋๊ธฐ ํต์ ์ผ๋ก ์ค์๊ฐ ์ ๋ฐ์ดํธ ๊ตฌํ
- ์ ํ ์ ๋๋ฉ์ด์ ๋ฐ ์์ฃผ ์ฐ์ถ ์ถ๊ฐ
- ํ ์ผ ์์ ๊ธฐ๋ฅ ์์ฑ
- ์ฃผ์ ๋ฒ๊ทธ ์์ (6๊ฐ์ง ์ค๋ฅ ํด๊ฒฐ)
- main.js ๋ฆฌํฉํ ๋ง (160์ค โ 80์ค)
- CSS/JS ํ์ผ ์ค๋ณต ์ ๋ฆฌ
- ์ต์ข ํ ์คํธ ์๋ฃ
- โ HTML ๊ตฌ์กฐ ์ค๋ฅ (๋ซํ์ง ์์ div ํ๊ทธ)
- โ ์ฒดํฌ๋ฐ์ค ์ด๋ฒคํธ ์ถฉ๋ (HTML vs JavaScript)
- โ ๋ผ์ฐํ ํจ์๋ช ๋ถ์ผ์น
- โ JavaScript ์คํ ์์ ๋ฌธ์
- โ API ์๋ต ํ์ ๋ถ์ผ์น
- โ ์๋ชป๋ ์๋ํฌ์ธํธ ํธ์ถ
- โ SS ํ์ผ ์ค๋ณต ์ ๊ฑฐ ์์
์ด ํ๋ก์ ํธ๋ ๊ต์ก ๋ชฉ์ ์ผ๋ก ์ ์๋์์ต๋๋ค.
ํ๋ก์ ํธ ๊ด๋ จ ๋ฌธ์์ฌํญ์ด ์์ผ์๋ฉด ์ด์๋ฅผ ๋ฑ๋กํด ์ฃผ์ธ์.