Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/madlabsinc/teachcode

A tool to develop and improve a student’s programming skills by introducing the earliest lessons of coding.
https://github.com/madlabsinc/teachcode

cli commander github hacktoberfest inquirer javascript node-js nodejs nodejs-cli python python3 teaching

Last synced: 4 days ago
JSON representation

A tool to develop and improve a student’s programming skills by introducing the earliest lessons of coding.

Awesome Lists containing this project

README

        



teachcode


A tool to develop and improve a student’s programming skills by introducing the earliest lessons of coding.


Build Status
npm version
Downloads
PRs Welcome
code style: prettier
Mentioned in Awesome-VuePress

Follow on Twitter


Buy Me a Coffee

---

**Chat: _[Telegram](https://t.me/teach_code)_**

**Donate: _[PayPal](https://www.paypal.me/jamesgeorge007), [Patreon](https://www.patreon.com/jamesgeorge007)_**

## Installation

`npm install -g teach-code`

## How to use

Users are required to solve 30 tasks that take them through the basic constructs of the programming language of their choice. The tasks are designed in such a way that the complexity increases as users progress through the tasks. One can't move forward until the current task is completed. Previously submitted tasks can be viewed if he/she wants but can't be worked on again.

- `teachcode` expects you to have a GitHub account. Make sure that you create one if you don't have one. [Learn more - Github Signup](https://docs.github.com/en/github/getting-started-with-github/signing-up-for-a-new-github-account)
- Navigate to the directory of your choice and type in `teachcode init`.
- Choose your track. Currently, we provide two tracks, Python and Javascript
- Enter your name. We ask for your name mainly for greeting purpose.
- Enter your GitHub username.
- Enter your GitHub personal token with repo access. [Learn more - GitHub Personal Token](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token)
- Now type in `cd teachcode-solutions`.
- Type in `teachcode fetchtask`.
- Hurray :tada: you've got your first task.
- Type in your solution for the task in the file `task1.py` (opted learning track) using any code editor of choice. We recommend using [VS Code](https://code.visualstudio.com/)
- Now type in `teachcode submit` to submit your solution.
- Enter your Git credentials when prompted. [Learn more - Git Credentials](https://docs.github.com/en/github/getting-started-with-github/getting-started-with-git)
- Fetch the next task with `teachcode fetchtask`.

## Available Commands

| command | description |
| ------------------------- | ------------------------------------------------------------------------------------- |
| teachcode init | Initializes all the tasks |
| teachcode fetchtask [key] | Fetches the task correponding to the key if provided (defaults to the very next task) |
| teachcode submit | Submits the current task |
| teachcode showkeys | Lists all the keys associated with the submitted tasks |

## Contributing

Contributions of any kind are welcomed. Make sure that you go through these [guidelines](https://teachcode.madlabs.xyz/guide/contributing.html).

### How should I write a commit message?

This project uses [Commitlint](https://github.com/conventional-changelog/commitlint/#what-is-commitlint) to check if the commit messages meet the [conventional commit format](https://www.conventionalcommits.org/en/v1.0.0/).

The full pattern is:

```sh
type(scope?): subject #scope is optional

body? #body is optional

footer? #footer is optional
```

Following that pattern, your commit messages should look like these:

```sh
feat: activate open collective
```

```sh
chore: correct typo

It should be "guest" and not "gest"
```

```sh
refactor(cli): drop support for node 6

BREAKING CHANGE: you will need to update your node version to keep using this CLI
This closes #123
```

### How should I name my branches?

Prefix your branch names with `feat/`, `docs/` or `hotfix/` for feature proposals, documentation and bug fixes, respectively.

## License

Licensed under `GNU General Public License V3.0`.