From b5d930192c332afbf632159df7a9715fd009ef92 Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Thu, 2 Dec 2021 17:22:01 +0100 Subject: [PATCH] Update readme --- .github/images/banner.png | Bin 0 -> 40377 bytes .github/sponsors/oss-logo.svg | 59 +++++++++++++++++++ README.md | 39 ------------ contributing/roadmap.md | 41 +++---------- readme.md | 108 ++++++++++++++++++++++++++++++++++ 5 files changed, 176 insertions(+), 71 deletions(-) create mode 100644 .github/images/banner.png create mode 100644 .github/sponsors/oss-logo.svg delete mode 100644 README.md create mode 100644 readme.md diff --git a/.github/images/banner.png b/.github/images/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..8fdcec93e28d117293e7cbd6234e748cbff07e8a GIT binary patch literal 40377 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 literal 0 HcmV?d00001 diff --git a/.github/sponsors/oss-logo.svg b/.github/sponsors/oss-logo.svg new file mode 100644 index 000000000..449ac4d54 --- /dev/null +++ b/.github/sponsors/oss-logo.svg @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + diff --git a/README.md b/README.md deleted file mode 100644 index a0b60d2a5..000000000 --- a/README.md +++ /dev/null @@ -1,39 +0,0 @@ -

- -

roadmap.sh

-

Community driven roadmaps, articles and resources for developers

-

- - roadmaps - - - roadmaps - - - roadmaps - -

-

- -[roadmap.sh](https://roadmap.sh) is the community effort to create knowledge that is approachable for the developers. - -The website is built with Next.js, contains roadmaps which are the step by step guides for developers, guides which are the easier to understand explanations on the complex topics. Anyone can contribute to the website by suggesting changes to existing paths, adding learning resources, becoming an author by adding new guides, updating the existing guides. - -## Development - -Clone the repository, install the dependencies and start the application - -```bash -git clone https://github.com/kamranahmedse/roadmap.sh -yarn install -yarn dev -``` - -## Contributions - -* Add new Roadmap -* Suggest changes to existing roadmap -* Write an article -* Improve the site's codebase -* Write tests - diff --git a/contributing/roadmap.md b/contributing/roadmap.md index 34c79ad87..33cc761d5 100644 --- a/contributing/roadmap.md +++ b/contributing/roadmap.md @@ -1,34 +1,11 @@ -# Submitting a new roadmap +## New Roadmap -First of all thank you for considering to contribute to this project. It wouldn't have been possible for us to keep it live without your contributions 🙏 +Please provide a rough textual roadmap with what you have in mind with an issue and we can take it from there. -> This process will be automated soon. Follow the steps listed below in order to add a new roadmap for now - -* Fork this repository -* If you haven't contributed to this project before then create your author profile - * Open the file [authors.json](../content/authors.json) - * Put your preferred `username` - * Put a profile picture in [authors directory](../public/authors) with the username -* Create a new directory for the roadmap inside the [roadmaps directory](../content/roadmaps) by following the below steps: - * Directory name must be `kebab-cased` and prefixed with the incremental number e.g. `6-java-developer` - * Create a markdown file `6-roadmap-name/0-About/0-Summary.md` inside this directory and write the article detailing the steps required for this path. It doesn't have to be graphic like the other roadmaps; just focus on writing a detailed but approachable textual guide. - * Create a file `meta.json` inside the roadmap directory with the content below: - ```json - { - "title": "Roadmap Name", - "description": "Step by step guide to becoming a modern ***", - "featuredDescription": "Step by step guide to becoming a modern ** in 2021", - "author": { - "name": "Your Name", - "url": "https://twitter.com/twitter" - }, - "featured": false, - "detailed": false, - "versions": [] - } - ``` -* Once done, run the below command: - ```shell - yarn meta:roadmaps - ``` -* Commit, push and open a pull request +## Existing Roadmaps + +For the existing roadmaps, please follow the details listed for the nature of contribution: + +* **Fixing Typos** — Make your changes in [the roadmap JSON file](/public/project) +* **Adding or Removing Nodes** — Please open an issue with your suggestion. +* **Adding Content to Nodes** — Add your content in [the content directory inside the relevant roadmap](/content/roadmaps). diff --git a/readme.md b/readme.md new file mode 100644 index 000000000..059b739e6 --- /dev/null +++ b/readme.md @@ -0,0 +1,108 @@ +![Web Developer Roadmap - 2021](./.github/images/banner.png) + +> Roadmap to becoming a web developer in 2021 + +[![](https://img.shields.io/badge/-Roadmaps%20-0a0a0a.svg?style=flat&colorA=0a0a0a)](http://roadmap.sh) +[![](https://img.shields.io/badge/-Guides-0a0a0a.svg?style=flat&colorA=0a0a0a)](http://roadmap.sh/guides) +[![](https://img.shields.io/badge/-Translations-0a0a0a.svg?style=flat&colorA=0a0a0a)](./translations) +[![](https://img.shields.io/badge/%E2%9D%A4-YouTube%20Channel-0a0a0a.svg?style=flat&colorA=0a0a0a)](https://www.youtube.com/channel/UCA0H2KIWgWTwpTFjSxp0now?sub_confirmation=1) + + +[roadmap.sh](https://roadmap.sh) is a community effort to create roadmaps, guides and other educational content to help guide the developers in picking up the path and guide their learnings. + +*** + +

+ Special Announcement: +
+ + + +
+ We now have a YouTube Channel +
+ I plan on covering the roadmaps and put more content there
Subscribe to the channel.
+

+ +*** +

Purpose of these Roadmaps

+ +> The purpose of these roadmaps is to give you an idea about the landscape and to guide you if you are confused about what to learn next and not to encourage you to pick what is hip and trendy. You should grow some understanding of why one tool would be better suited for some cases than the other and remember hip and trendy never means best suited for the job. + +

Note to Beginners

+ +> These roadmaps cover everything that is there to learn for the paths listed below. Don't feel overwhelmed, you don't need to learn it all in the beginning if you are just getting started. We are working on the beginner versions of these and will [release it soon](https://roadmap.sh) after we are done with the 2021 release of the Backend and DevOps roadmaps. + +*** + +## Available Roadmaps + +Here is the list of available roadmaps with more being actively worked upon. + +- [Frontend Roadmap](https://roadmap.sh/frontend) +- [Backend Roadmap](https://roadmap.sh/backend) +- [DevOps Roadmap](https://roadmap.sh/devops) +- [React Roadmap](https://roadmap.sh/react) +- [Angular Roadmap](https://roadmap.sh/angular) +- [Android Roadmap](https://roadmap.sh/android) +- [Python Roadmap](https://roadmap.sh/python) +- [Go Roadmap](https://roadmap.sh/go) +- [Java Roadmap](https://roadmap.sh/java) +- [DBA Roadmap](https://roadmap.sh/dba) + +If you think that these can be improved in any way, please do suggest. Also, if you would like to contribute to existing roadmaps or add a new roadmap, please open an issue or reach out to [@kamranahmed](https://twitter.com/kamranahmedse). + +## Development + +The website is built with Next.js, contains roadmaps which are the step by step guides for developers, guides which are the easier to understand explanations on the complex topics. Anyone can contribute to the website by suggesting changes to existing paths, adding learning resources, becoming an author by adding new guides, updating the existing guides. + +Clone the repository, install the dependencies and start the application + +```bash +git clone https://github.com/kamranahmedse/roadmap.sh +npm install +npm run dev +``` + +## Contribution + +> Have a look at [contribution docs](./CONTRIBUTING.md) for how to update any of the roadmaps + +* Add new Roadmap +* Suggest changes to existing roadmap +* Improve the site's codebase +- Write tests +- Discuss ideas in issues +- Spread the word +- Reach out with any feedback [![Twitter URL](https://img.shields.io/twitter/url/https/twitter.com/kamranahmedse.svg?style=social&label=Follow%20%40kamranahmedse)](https://twitter.com/kamranahmedse) + +
+
+
+ + + +
+ + +## License + +Have a look at the [license file](./LICENSE) for details