Open-source project
Asabeneh/30-Days-Of-JavaScript avatar
Asabeneh/30-Days-Of-JavaScript

30 Days Of JavaScript: A Markdown Curriculum, Not a Toolchain

30 days of JavaScript programming challenge is a step-by-step guide to learn JavaScript programming language in 30 days. This challenge may take more than 100 days, please just follow your own pace. These videos may help too: https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw

46,814 stars10,460 forksJavaScriptLicense varies

At a glance

What is it?
Asabeneh Yetayeh's 30 Days Of JavaScript is a 30-file Markdown course with no build step, no test runner and no declared licence. It suits self-directed beginners who want a reading path; it is the wrong choice if you need graded exercises, an autograder or a maintained dependency tree.
Who is it for?
Adopt 30 Days Of JavaScript if you are a self-directed beginner who wants a linear reading path through core JavaScript and is willing to supply your own editor, runtime and exercises; the repository ships Markdown lessons and no tooling. Do not adopt it if you need graded assignments, an autograder, or a dependency tree you can pin and audit.
Can I use it commercially?
Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
Is it still maintained?
Yes. The repository last received commits 19 days ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What Problem the 30-Day Table Solves

The repository answers a sequencing question, not a tooling one. Its README opens with a table mapping day numbers 01 to 30 onto topics, and each row links to a Markdown file in its own directory: ./02_Day_Data_types/02_day_data_types.md, ./05_Day_Arrays/05_day_arrays.md, ./21_Day_DOM/21_day_dom.md, and so on. Someone who has decided to learn JavaScript and does not know what to read first gets an ordered answer without having to assemble one.

The audience is implied by the topic order. Days 2 through 20 cover the language itself: data types, booleans and operators and Date, conditionals, arrays, loops, functions, objects, higher order functions, sets and maps, destructuring and spreading, regular expressions, console object methods, error handling, classes, JSON, web storages, promises and closures. Only at day 21 does the material move to the DOM, and days 24 to 30 are labelled as mini projects: a solar system, two world countries data visualisation exercises, a portfolio, a leaderboard, animating characters, and a final project. That is a browser-oriented path, not a Node.js or backend one, despite the repository carrying node and nodejs among its topics.

The README also sets expectations about duration directly: the challenge is described as a step-by-step guide to learn JavaScript in 30 days, followed by the caveat that it may take more than 100 days and that readers should follow their own pace. Treat the day numbers as an ordering device rather than a schedule.

The Repository Is Markdown, Not an Application

There is no runtime mechanism to describe here, and that is the most important structural fact about the project. The unit of delivery is a Markdown file per day, sitting in a numbered directory. The README is the index; the lesson files are the content. There is no package.json described in the README, no configuration file, no CLI entry point and no test harness. The primary language listed for the repository is JavaScript, which reflects the language being taught and the code inside the lessons, not a build system you install.

That shape has consequences for how the material ages. A lesson file that shows a console.log example or a DOM snippet is a static document. Nothing in the repository will tell you when a browser behaviour it demonstrates has changed. The dependency graph is effectively the reader's browser and the reader's editor, both of which live outside the repository.

The one piece of genuine cross-referencing in the README is a link to a YouTube channel, offered as optional video support. The README does not state which days the videos cover or whether they track the written lessons. If you rely on video, verify the coverage yourself before planning around it.

The repository also carries a wide topic list, including angular, react, redux, vue, typescript, d3, d3js, css and website. Nothing in the README's day table names those as lesson topics. The table ends at final projects. Treat the topic list as metadata rather than a syllabus, and check the day directories if a specific framework is what you came for.

How You Actually Consume the Lessons

There is no install step. The README gives no npm install, no clone command and no start script, so the practical workflow is reading and typing. Open the day file you are on, read it, and write the examples in a JavaScript environment you already have: a browser console, a scratch HTML file, or a Node.js REPL if you have one. The repository does not prescribe which.

The paths in the README table are relative, so they resolve against the repository root. If you browse the repository on its hosting page, the links work as written. If you clone it, the same relative paths resolve on disk. The default branch is master, which matters if you are scripting a clone or pinning a commit, because a default branch named master is not the same as main and a hardcoded main will fail.

The only configuration surface the material exposes is the language variant. The introduction page lists translated entry points alongside the English readMe.md: Spanish at./Spanish/readme.md, Italian at./Italian/readMe.md, Russian at./RU/README.md, Turkish at./Turkish/readMe.md, Azerbaijani at./Azerbaijani/readMe.md, Korean at./Korea/README.md, Vietnamese at./Vietnamese/README.md, Polish at./Polish/readMe.md, and a Portuguese entry that is truncated in the README. Note that the file casing differs between translations (readme.md, readMe.md, README.md). On a case-sensitive filesystem, a link that works on one machine can 404 on another. If you are building anything that resolves those paths programmatically, match the exact case shown in the README rather than normalising it.

The README also contains a sponsorship section pointing to GitHub Sponsors and PayPal. That is a funding route for the author, not a support contract, and it does not imply any response-time commitment for questions about the lessons.

No Exercises, No Autograder, No Feedback Loop

This is the limitation that decides whether the project fits you. The README shows a table of topics and Markdown lesson files. It does not show an exercise bank, a solution set, a test runner or any mechanism that checks your work. The mini projects in days 24 to 30 are described as projects, and the README does not state that reference implementations are provided for them.

For a reader who needs external validation to stay on track, that is a real gap. You can read the arrays lesson and understand it, and still have no signal about whether your own array code is correct. The feedback loop is whatever you build around the material: a scratch file, a browser console, a friend who reviews your code.

There is a second, quieter failure mode. Because the lessons are prose-heavy Markdown, it is possible to read all 30 days and write very little. The repository cannot detect that, and nothing in the README's structure prevents it. The 100-day caveat in the introduction suggests the author expects readers to slow down, but a slow read is not the same as practice.

A third issue is drift. The README carries a January 2020 date next to the author credit. The repository's last push is recorded as 2026-08-27, so it has been touched since, but the README does not include a changelog, a versioning scheme or release notes (no releases were retrieved). If you are teaching from these files, you have no documented way to know what changed between the version you reviewed and the version your students open.

Where MDN Web Docs Fits Instead

The obvious alternative for the same reader is MDN Web Docs, and the difference is not quality, it is shape. MDN is a reference organised by API and language feature, written to answer a specific question about a specific method or behaviour, and maintained continuously against browser changes. 30 Days Of JavaScript is a sequence organised by day number, written to be read start to finish.

That changes what you do when you get stuck. On day 12, regular expressions, the lesson file is the thing you read. If you then need to know whether a particular flag behaves a certain way in a particular engine, the lesson is not the right instrument; a reference is. The two are complements, and the failure mode is using the curriculum as a reference: paging through 30 Markdown files looking for one method signature is slower than searching an API index.

The reverse mistake is also common. A reference does not tell you what to learn first, and a beginner who starts at an API index tends to read about closures before they have written a loop. The day table is the part of this repository that a reference does not provide, and it is the part worth keeping. If you already know JavaScript and want to fill a specific gap, the numbered structure is overhead. If you do not know where to start, it is the whole value.

Maintenance, Licensing and What to Verify

The cost of adopting this material is low in the mechanical sense and non-zero in the editorial sense. There is nothing to upgrade: no dependencies to patch, no lockfile to regenerate, no build that breaks. The ongoing cost is that you are reading a document whose accuracy is not automatically checked, and whose translations may lag the English original. If you are running a study group, the work of keeping everyone on the same revision falls on you.

The licence is the item to resolve before any institutional use. The metadata available here records the licence as unknown, and the README excerpt does not state one. Without a licence file or a licence statement, the default position under copyright is that no permissions are granted beyond what the hosting platform's terms allow. That is a description of the situation, not legal advice. If you plan to reuse the lesson text, translate it, or ship it inside a paid course, read the repository root for a LICENSE file and, if there is none, ask the author directly through the contact links the README provides.

Two other things are worth confirming at the root before you commit time. First, that the day table in readMe.md still lists all 30 days and that each linked directory exists, since the table is the only index and a broken row is a dead end. Second, that the translation you intend to follow is complete, because the README lists nine language variants and it does not show how far each one has been carried.

Editorial conclusion

Adopt 30 Days Of JavaScript if you are a self-directed beginner who wants a linear reading path through core JavaScript and is willing to supply your own editor, runtime and exercises; the repository ships Markdown lessons and no tooling. Do not adopt it if you need graded assignments, an autograder, or a dependency tree you can pin and audit. Before you start, open the repository root, confirm the readMe.md day table still lists all 30 days, and check whether a LICENSE file exists at that root, because the metadata available here records the licence as unknown.

Official sources

  1. Asabeneh/30-Days-Of-JavaScript on GitHub
  2. Issues
  3. README
Community notes

Community notes