尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Grade-wise puzzles and games for children in Grades 1–5. One codebase, three parts:
| Path | What it is |
|---|---|
apps/web | Marketing homepage (React + Vite) |
apps/mobile | The app — Expo / React Native for iOS, Android and web |
packages/content | Shared puzzle bank (JSON), curriculum, puzzle types and design tokens |
See ROADMAP.md for the phase plan. Current status: Grades 1–5 are playable in all eight subjects — Maths, English, Science, Coding, Robotics, Puzzles, Thinking Skills (2,360 puzzles) and Practice & Tests — with adaptive difficulty.
npm install # once, at the repo root (npm workspaces)
npm run mobile # Expo dev server — press w for web, or scan the QR code with Expo Go
npm run web # homepage dev server
npm run validate-content # check every puzzle in packages/content/puzzles
npm run typecheck
vercel.json at the repo root builds both parts into one site:
/ is the homepage (apps/web)./app is the app's web version (apps/mobile, exported by Expo with base path /app).npm run build does the same locally; the output goes to apps/web/dist. In Vercel project settings, leave Root Directory empty (repo root) and the framework preset on Other. vercel.json sets the build command and output directory.
Six topics, 20 puzzles each across 3 levels — 120 puzzles:
| Topic | Puzzle type | Levels |
|---|---|---|
| Counting | count-objects | 1–5 · 6–10 · 11–20 |
| Adding | arithmetic | sums to 5 with pictures · to 10 with pictures · to 10, numbers only |
| Taking away | arithmetic | within 5 · within 10 · numbers only |
| Shapes | shape-match | circle/square/triangle · + star/diamond · square vs rectangle |
| More or fewer | compare | big gap · gap of 2 · gap of 1 |
| Patterns | pattern | AB · AAB/ABB · ABC/ABBC |
Four topics, 20 puzzles each across 3 levels — 80 puzzles, built from the word bank in packages/content/src/words.ts:
| Topic | Puzzle type | Levels |
|---|---|---|
| Big & small letters | letter-match | very different letters · mixed · look-alikes (b d p q) |
| First letters | first-letter | 3 very different letters · mixed · 4 options with look-alikes |
| Picture words | picture-word | different first letters · same first letter (moon/mouse/milk) · missing letter (v_n) |
| Rhyming words | rhyme | 3 options · with a same-start decoy (cat → cake) · 4 options |
Rhymes are grouped by sound, not spelling (bear/chair, bee/key), in RHYME_FAMILIES. A missing-letter puzzle never offers a wrong letter that spells another real word (c_t: no "o", because "cot" is a word). The content checker enforces both. No puzzle depends on hearing an isolated letter sound, because the device voice can't say "buh"; recorded clips can add that later.
Five topics, 20 puzzles each across 3 levels — 100 puzzles, built from the picture categories in packages/content/src/categories.ts (farm, wild and sea animals; fruit; vegetables; vehicles; clothes; school things; weather).
| Subject | Topic | Puzzle type | Levels | Star for… |
|---|---|---|---|---|
| Puzzles | Odd one out | odd-one-out | very different (3 vegetables + a lion) · same family (sea animals + a giraffe) · 5 items | right on the first tap |
| Puzzles | Picture crossword | crossword | two 3-letter words, 2 blanks · up to 4 letters, 3 blanks · 4–5 letters, 4 blanks incl. the shared square | no wrong letters |
| Thinking | Sorting | sort-into-groups | 2 groups, 4 items · 2 groups, 6 items · 3 animal or thing groups | no wrong groups |
| Thinking | Memory pairs | memory-match | 3 pairs · 4 pairs · 6 pairs | no more wrong guesses than pairs |
| Thinking | Mazes | maze | 3×3 · 4×4 · 5×5 | at most 2 bumps into walls |
Crosswords, sorting, memory and mazes take several taps, so each has its own player in apps/mobile/src/components/puzzles/interactive.tsx; single-tap types use renderers.tsx. The content checker makes sure:
Tap a crossword clue picture or a sorting item to hear its name. Mazes work with the arrow buttons, by tapping the next square, or with the keyboard arrow keys on the web.
17 topics, 20 puzzles each across 3 levels — 340 puzzles.
| Subject | Topic | Puzzle type | Levels |
|---|---|---|---|
| Maths | Tens and ones | place-value | blocks to 50 · to 99 · "How many tens/ones in 47?" |
| Maths | Adding to 100 | arithmetic | 2-digit + 1-digit · 2-digit + 2-digit · with carrying |
| Maths | Taking away to 100 | arithmetic | − 1-digit · 2-digit − 2-digit · with borrowing |
| Maths | Skip counting | number-pattern | by 2s/5s/10s, last missing · by 2–10, middle missing · counting back |
| Maths | Equal groups | arithmetic (×) | groups of pictures up to 5 × 3 · up to 5 × 5 · ×2, ×5, ×10 facts |
| Maths | Time | clock | o'clock · half past · quarter past / quarter to |
| Maths | Money | money | ₹1/₹2/₹5 coins to ₹10 · coins and ₹10/₹20 notes to ₹50 · with ₹50 notes to ₹100 |
| English | One and many | fill-blank (plural) | add -s · add -es · mice, feet, teeth, children, sheep |
| English | Opposites | fill-blank (opposite) | big/small… · heavy/light… · open/close, inside/outside… |
| English | a or an, is or are | fill-blank (article, is-are) | a/an · is/are · mixed |
| English | Spell it | build (letters) | 3 letters · 4 letters · 5 letters + a spare |
| English | Make a sentence | build (words) | 3 words · 4–5 words · 5–6 words + a spare |
| Puzzles | Mini crossword | crossword | 2 words, 3 blanks · 3 words, 4 blanks · 3 words, 6 blanks |
| Puzzles | Picture sudoku | sudoku (4×4) | 3 blanks · 6 blanks · 9 blanks |
| Thinking | What comes first? | order-steps | 2–3 steps · 4 steps · 4–5 steps |
Content lives in src/words2.ts (plurals, opposites, a/an nouns, is/are subjects, sentences), src/thinking2.ts (sequences, riddles), src/time.ts and src/sudoku.ts. The checker recomputes every answer:
17 topics, 20 puzzles each across 3 levels — 340 puzzles.
| Subject | Topic | Puzzle type | Levels |
|---|---|---|---|
| Maths | Numbers to 1000 | place-value (hundreds), compare-numbers | read the blocks · "How many hundreds/tens?" · <, =, > |
| Maths | Add and subtract | arithmetic | 3-digit, no carrying · carrying in one place · in two places |
| Maths | Times tables | arithmetic × | tables 2–5 · 6–9 · missing factor (? × 5 = 45) |
| Maths | Sharing equally | arithmetic ÷ | with pictures · numbers · word problems |
| Maths | Fractions | fraction | halves and quarters · thirds · "Which picture shows ¾?" |
| Maths | Time and calendar | clock, calendar | 5-minute times · days of the week · months and days in a month |
| Maths | Money and length | money, measure | totals with ₹100/₹200 · change · ruler in cm |
| English | Naming, doing, describing | word-class | nouns · verbs · adjectives |
| English | Past tense | fill-blank (past) | -ed · cried, stopped, danced · went, ate, swam |
| English | Synonyms and homophones | fill-blank (synonym, homophone) | same meaning · there/their, to/two/too · mixed |
| English | Spelling bee | build | 6 letters · 7 · 8 + a spare |
| English | Read and answer | passage | who · what · why |
| Puzzles | Clue crossword | crossword (text clues) | 3 words · 4 words · 4 words, 8 blanks |
| Puzzles | Sudoku 6×6 | sudoku | 8 blanks · 14 · 20 |
| Thinking | Logic grids | logic-grid | 2×2 · 3×3 with "has" clues · 3×3 with "does not have" clues |
Content lives in:
src/words3.ts: tagged sentences, past tense, synonyms, homophones, spelling words, passages.src/thinking3.ts: crossword clues, logic-grid sets, analogies.src/calendar.ts, src/crossword.ts (layout shared with Grade 2), src/sudoku.ts (4×4 and 6×6) and src/logic.ts.The checker recomputes every answer:
17 topics, 20 puzzles each across 3 levels — 340 puzzles.
| Subject | Topic | Puzzle type | Levels |
|---|---|---|---|
| Maths | Large numbers | place-value (thousands, expanded), compare-numbers | thousands/hundreds · 3000 + 300 + 6 · compare 4-digit |
| Maths | Multiply and divide | arithmetic | 2-digit × 1-digit · 3-digit ÷ 1-digit · 2-digit × 2-digit |
| Maths | Factors and multiples | pick-all | multiples · factors · common multiples |
| Maths | Fractions | fraction-op | equivalent · bigger · add like fractions |
| Maths | Decimals | decimal | ₹ to paise · tenths on a bar · compare (0.3 vs 0.13) |
| Maths | Time | clock, time-calc | to the minute · 24-hour ↔ am/pm · how long |
| Maths | Area and perimeter | grid-shape | count squares · count edges · rectangle sides |
| English | Pronouns and adverbs | word-class | pronouns · adverbs · mixed |
| English | Tenses | fill-blank (future, continuous) | will play · is playing · mixed |
| English | Prefixes and suffixes | fill-blank (affix) | un-/re-/dis- · -ful/-less/-er · mixed |
| English | Word ladders | word-ladder | 2 steps · 3 steps · 3–4 steps |
| English | Read and think | passage | what · why · word meaning in context |
| Puzzles | Big crossword | crossword (text clues) | 4 words · 5 words · 5 words, 11 blanks |
| Puzzles | Hard sudoku | sudoku (6×6) | 18 blanks · 22 · 24 |
| Thinking | Logic grids | logic-grid | 3×3 · 3×3 "not" clues · 4×4 |
| Thinking | Number patterns | (rules) |
Content lives in src/maths4.ts, src/words4.ts and src/thinking4.ts. The checker:
17 topics, 20 puzzles each across 3 levels — 340 puzzles.
| Subject | Topic | Puzzle type | Levels |
|---|---|---|---|
| Maths | Numbers to 1 lakh | place-value (ten thousands), compare-numbers | read digits · expanded form · compare 5-digit |
| Maths | Big × and ÷ | arithmetic (with remainder) | 3-digit × 2-digit · 4-digit ÷ 1-digit · long division with remainder |
| Maths | Fractions | fraction-op | simplify · fraction of a number · add unlike fractions |
| Maths | Decimals | decimal | hundredths · add/subtract money · round to the nearest whole |
| Maths | Percentages | percent | shaded 10×10 grid · % of a number · sale price |
| Maths | Angles and area | angle, grid-shape | name the angle · measure it · triangle area |
| Maths | Bar charts | chart | read a bar · difference · total, most, least |
| English | Joining and position words | fill-blank | and/but/or · because/so · prepositions |
| English | Passive and reported speech | fill-blank, build | passive · reported speech · quotation marks |
| English | Idioms and proverbs | idiom | idioms · proverbs · idiom in a sentence |
| English | Tricky spellings | fill-blank, build | silent letters · -tion/-sion · commonly misspelt |
| English | Read and infer | passage | main idea · inference · best title |
| Puzzles | Crosswords | crossword (text clues) | 5 words · 6 words · 6 words, 13 blanks |
| Puzzles | Sum grids | sum-grid (3×3, digits 1–9) | 3 blanks · 5 · 7 |
| Thinking | Brain teasers | teaser |
Content lives in src/maths5.ts, src/words5.ts and src/thinking5.ts. The checker:
solve() where it has one.15 topics (3 per grade), 20 puzzles each across 3 levels — 300 puzzles.
| Grade | Topics |
|---|---|
| 1 | My body · Living and non-living · Animals around us |
| 2 | Plants · Food · Weather and seasons |
| 3 | Animal life (what animals eat) · Senses and body care · Air and water |
| 4 | Plants and food · Solids, liquids, gases and magnets · The water cycle |
| 5 | Body systems · Living world (food chains, habitats) · Earth and space |
New puzzle types:
label-diagram: a drawn body, plant or water cycle. Level 1 marks one part with "?"; level 2 numbers every part and asks for one by name or by its job.science-quiz: a picture and a question.true-false: a picture and a statement.sort-into-groups, with science groups such as living/non-living, floats/sinks, solid/liquid/gas and magnetic/non-magnetic.All content lives in src/science.ts and is arranged by scripts/generate-science.ts. The checker looks every question and fact up in the bank for its topic, checks each diagram answer against the part list (numbers, names and jobs), and keeps science sorting groups apart from the odd-one-out categories.
Each grade has a 10-question test for every subject with enough one-tap puzzles, plus a Mixed test:
How a test works:
The logic is in packages/content/src/tests.ts (testsFor, buildTest, scoreTest). npm test checks every grade's tests (level mix, no repeats, the right bank) and the scoring.
Optional. Without an account the app works exactly as before, with progress kept on the device.
What a signed-in parent gets:
packages/content/src/sync.ts).How it's built:
supabase/migrations/0001_parent_accounts.sql creates the children and progress tables.
delete_my_account() removes the parent and everything linked to them.apps/mobile/src/lib/supabase.ts and lib/progress.tsx handle sync, and the parent-settings UI is components/AccountCard.tsx./privacy.html.Done:
0001–0002).apps/mobile/.env, so accounts are switched on.Still to do in the Supabase dashboard:
Your QuickStep code is {{ .Token }}, so parents get a 6-digit code.https://quicklearning2.vercel.app.| Menu | Goes to |
|---|---|
| Home | top of the homepage |
| Learning | the subjects row; each subject tile opens that subject in the app |
| Games | the app's Puzzles for the chosen grade |
| Practice | the app's Practice & Tests for the chosen grade |
| Discover | the articles section |
| For Parents | a section on accounts, test reports, adaptive levels and privacy, with a link to parent settings |
apps/web/public/articles/ (index at /articles/), sharing article.css:
10 topics (2 per grade), 20 puzzles each across 3 levels — 200 puzzles. There's no typing: children build programs from blocks, press ▶ Run and watch the robot follow them.
| Grade | Topics |
|---|---|
| 1 | Robot steps (arrow sequences) · Fix the program (find the wrong arrow) |
| 2 | Coin collector (longer programs, collect every coin) · Debugging |
| 3 | Loops (repeat blocks within a block limit) · Read the code (count the loops) |
| 4 | Turn and move (forward / turn left / turn right) · If and else (trace a program) |
| 5 | Functions (build with an F block) · Variables (trace a program) |
code-grid (interactive): blocks, repeat counts, block limit, debug mode.code-trace (one tap): the program is shown Scratch-style and the question asks for a variable's value or a count.packages/content/src/coding.ts is shared by the app and the checker:
10 topics (2 per grade), 20 puzzles each across 3 levels — 200 puzzles.
| Grade | Topics |
|---|---|
| 1 | Robots around us · Parts of a robot (labelled robot diagram) |
| 2 | Robot senses (cameras, microphones, touch and light sensors) · Parcel robot (program a pickup) |
| 3 | Power and motors (batteries, electricity safety) · Delivery robot (loops to save battery) |
| 4 | Circuits (“Will the bulb light up?”) · Sensor programs (if the distance sensor says…) |
| 5 | Real robots (Pragyan, Vyommitra, Mars rovers, AI) · Rover mission (turn, drive, collect samples) |
circuit type: battery, one or two bulbs, a switch, a broken wire, or a gap closed by an object that may conduct. The checker recomputes the answer with bulbLights().packages/content/src/robotics.ts.npm run build ends with apps/web/scripts/seo.mjs, which:
/class-1/ … /class-5/. Each lists every topic in every subject with links into the app, plus structured data (Course and BreadcrumbList);__SITE_URL__) in canonical links, Open Graph/Twitter tags and structured data on the homepage, articles and privacy page;sitemap.xml and robots.txt. The app at /app/ is noindex and not crawled, since its screens are for playing.The share image is apps/web/public/og-image.png (1200×630).
.in too if you like.www.yourdomain.com and yourdomain.com, and make one redirect to the other. Add the DNS records Vercel shows at your registrar: usually an A record for the bare domain and a CNAME for www.SITE_URL=https://www.yourdomain.com and redeploy. Every canonical link, the sitemap and the share tags switch over.GOOGLE_SITE_VERIFICATION in Vercel to add the meta tag), then submit https://www.yourdomain.com/sitemap.xml.A session is 10 puzzles. It starts at the easiest level that still has unsolved puzzles, moves up a level after 3 first-try answers in a row, and down a level after 2 misses in a row. Within a level, unsolved puzzles come before replays. The rules are in packages/content/src/adaptive.ts, and npm test covers them.
How play works: Each question is read aloud (with a 🔊 button to repeat it). A wrong pick wiggles and the child can try again. A star is earned only for a right answer on the first try. Stars, solved puzzles and the daily streak are saved on the device. Parent settings (progress, sound, change grade, reset) are behind a parent gate: a 2-digit × 2-digit question.
Every question is read aloud in Indian English.
apps/mobile/src/lib/voice.ts).npm run voice -w packages/content records one clip for every puzzle prompt and fixed phrase with Google Cloud Text-to-Speech (en-IN-Neural2-A). It needs GOOGLE_TTS_API_KEY. Clips go to apps/mobile/assets/voice/ and are listed in src/lib/voice-manifest.ts. The app plays a clip when one exists and uses the device voice for anything else. Re-run it after adding puzzles; only new lines are recorded. Use --sample 5 to audition a few clips first, and --voice / --rate / --pitch to change the voice.packages/content/src/voice.ts, so they get clips too. npm test checks the voice picker, speech rules, adaptive difficulty and the sudoku, logic-grid and magic-square solvers.Puzzles are data, not code. Each record in packages/content/puzzles/**.json looks like:
{ "id": "g1-addition-03", "grade": 1, "subject": "maths", "topic": "g1-addition", "difficulty": 1,
"prompt": "What is 2 plus 1?", "type": "arithmetic",
"payload": { "a": 2, "op": "+", "b": 1, "item": "🎈" }, "options": [1, 3, 4], "answer": 3 }
npm run validate-content. It checks ids are unique, the answer is one of the options, and the answer is actually correct (the sum adds up, the count matches, the pattern continues).packages/content/scripts/generate-g1-maths.ts made the first Grade 1 bank. Running it again overwrites puzzles/g1-maths/.src/types.ts and the validator, then add one renderer entry in apps/mobile/src/components/puzzles/renderers.tsx.TOPICS in src/curriculum.ts and import its JSON in src/index.ts. Unlock a subject or grade in AVAILABLE.| Pick grade | Topics | Adding | Patterns | Result |
|---|---|---|---|---|
| English topics | Picture words | Missing letter | First letters | Rhymes |
|---|---|---|---|---|
| Odd one out | Crossword | Sorting | Memory | Maze |
|---|---|---|---|---|
| Grades | Tens and ones | Time | Money | Equal groups |
|---|---|---|---|---|
| One and many | Spell it | Make a sentence | Mini crossword | Sudoku |
|---|---|---|---|---|
| What comes first? | Who am I? | Bigger maze |
|---|---|---|
| Subjects | Numbers | Fractions | Ruler | Sharing | Reading |
|---|---|---|---|---|---|
| Word classes | Clue crossword | Sudoku 6×6 | Logic grid | Analogy | Magic square |
|---|---|---|---|---|---|
| Subjects | Expanded form | Fractions | Decimals | Time | Area | Factors |
|---|---|---|---|---|---|---|
| Tenses | Word ladder | Reading | Big crossword | Logic grid 4×4 | Codes | Patterns |
|---|---|---|---|---|---|---|
| Thinking topics | Percent | Angles | Bar chart | Fractions | Idioms | Passive |
|---|---|---|---|---|---|---|
| Crossword | Sum grid | Brain teaser | Series | Codes |
|---|---|---|---|---|
| Topics | Label the part | Numbered diagram | True or false | Quiz | Sorting |
|---|---|---|---|---|---|
| Tests | One try | Report | Parents |
|---|---|---|---|
| Sign in | Children | Who's playing? |
|---|---|---|
| Debugging | Loops | Turn and move | Read the code |
|---|---|---|---|
| Robot parts | Circuits | Rover mission |
|---|---|---|
| Thinking |
| Who am I? |
riddle |
| 2 clues, very different pictures · 3 clues, look-alikes · 4 look-alikes |
| Thinking | Bigger mazes | maze | 5×5 · 6×6 · 7×7 |
| Thinking | Analogies | analogy | pictures · words · harder words |
| Thinking | Magic squares | magic-square | 2 blanks · 4 · 6 |
number-pattern| doubling · growing steps · squares |
| Thinking | Secret codes | cipher | A=1 codes · shift codes · write in code |
| 1-step · 2-step · classic teasers |
| Thinking | Series and analogies | analogy, number-pattern | 2 : 4 :: 5 : ? · alternating steps · Fibonacci-like |
| Thinking | Logic and codes | logic-grid, cipher | 4×4 grids · A ↔ Z codes · write in code |