Compare commits

..

1259 Commits

Author SHA1 Message Date
Kamran Ahmed
985d2e9692 Update forkable roadmap 2023-10-25 12:14:00 +01:00
Kamran Ahmed
34c2b932da Load user version of roadmap 2023-10-25 09:19:00 +01:00
Kamran Ahmed
24123bc3e5 Merge branch 'master' of github.com:kamranahmedse/developer-roadmap into feat/version 2023-10-25 09:10:28 +01:00
Kamran Ahmed
5a1be434cb Add functionality to load your own version 2023-10-25 09:07:34 +01:00
Kamran Ahmed
ff3ebed493 Update UI for create your own version 2023-10-25 08:33:13 +01:00
Kamran Ahmed
7da244fe10 Add related questions below roadmaps 2023-10-24 23:48:50 +01:00
Kamran Ahmed
cf78628c0c Add content for android 2023-10-24 21:01:55 +01:00
Kamran Ahmed
498e03720f Create files for android roadmap 2023-10-24 20:57:54 +01:00
Kamran Ahmed
5c69b05470 Update android roadmap 2023-10-24 20:49:59 +01:00
Arik Chakma
2a76ebfbbf Add fork at title 2023-10-25 01:40:26 +06:00
Arik Chakma
ba1f9ef9d0 Remove topicCount 2023-10-25 01:39:02 +06:00
Arik Chakma
4a864175cc Update frontend JSON 2023-10-25 01:37:13 +06:00
Arik Chakma
d3cfd50831 Change button position 2023-10-24 20:56:06 +06:00
Abdelrhman Kamal
309cf3d6d9 Fix: google translate extenstion close side panel (#4625)
* Fix gtx-trans close sidepanel

* reset the package-lock.json file
2023-10-24 14:19:53 +01:00
Kamran Ahmed
4f3b891e45 Update dependencies 2023-10-24 14:16:26 +01:00
Kamran Ahmed
47f548a0e4 Update dependencies 2023-10-24 14:07:41 +01:00
Kamran Ahmed
a988ecc4ab Roadmap action button color 2023-10-24 14:03:36 +01:00
Arik Chakma
d2343f4b15 Create Roadmap Version 2023-10-24 04:57:42 +06:00
Kamran Ahmed
c723070057 Remove web-draw package 2023-10-23 16:57:58 +01:00
Kamran Ahmed
3a0e588530 Refactor to fix editor scaling issues (#4618)
* Ignore editor file

* Integrate Readonly Editor

* Remove logs

* Implement minimum height

* Implement Custom Roadmap Modal

* Implement Custom Roadmap progress modal

* Implement Readonly Editor

* Implement utils

* Update `gitignore`

* Fix generate renderer script

* Refactor UI

* Add Empty Roadmap state

* Upgrade dependencies and editor update

* Update deployment workflow

* Update roadmap header

* Update dependencies

* Refactor Readonly editor

* Add Readonly Dummy Editor

* Add editor to gitignore

* Add Assume Unchanged

* Add editor in the tailwind

* Fix tailwind issue

* Fix URL for add friends

* Add share with friends functionality

* Update workflow

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2023-10-21 19:42:55 +01:00
Arik Chakma
d46cf26812 Minor Improvement for Custom Roadmap (#4590)
* Add Edit button in the roadmap list

* Add share with others button

* Fix editor link
2023-10-21 19:40:26 +01:00
Kamran Ahmed
b06e82de5f Sponsor for nginx 2023-10-13 22:41:46 +01:00
Kamran Ahmed
d65ecac777 Account dropdown changes 2023-10-13 19:52:21 +01:00
Kamran Ahmed
c46d962803 Add links to questions 2023-10-12 21:22:01 +01:00
Kamran Ahmed
bd4e7ea3d0 Add links to questions 2023-10-12 21:20:21 +01:00
Kamran Ahmed
252b083a48 add roadmap editor image 2023-10-12 20:56:01 +01:00
Arik Chakma
abbeb717d1 Add JavaScript questions (#4505)
* Add Javascript questions

* wip: add more questions

* wip: add ternary operator

* wip: add more questions

* wip: add more questions

* wip: add more questions

* wip: add more questions

* fix: set example

* wip: add more questions

* wip: add more question

* wip: add more questions

* wip: add more questions

* wip: add more questions

* wip: add more questions

* wip: add more questions

* wip: add more questions

* wip: add more questions

* wip: add another question

* wip: add more questions

* wip: add more questions

* wip: add more questions

* wip: add more questions

* wip: add more questions

* wip: add more questions

* wip: add more questions

* wip: add more questions
2023-10-12 15:03:19 +01:00
Kamran Ahmed
485ca9dd8f Spring testing link fix 2023-10-11 14:32:40 +01:00
Kamran Ahmed
c3315fb41e Fix typo on teams page 2023-10-11 12:56:56 +01:00
Kamran Ahmed
6ed436674f Discovery page option in sharing 2023-10-10 00:12:05 +01:00
Kamran Ahmed
76c6c4dc1f isDiscoverable not persisted 2023-10-10 00:06:24 +01:00
Kamran Ahmed
cb56e85651 Discoverable option selection 2023-10-09 23:27:49 +01:00
Kamran Ahmed
dcf740e275 Update share buttons text 2023-10-09 21:57:33 +01:00
Arik Chakma
16662ed699 Implement Social Share options (#4569)
* Implement social share options

* Minor fix
2023-10-09 21:49:21 +01:00
Kamran Ahmed
6f9fe361ae Change style of custom roadmap page 2023-10-09 09:07:59 +01:00
Arik Chakma
036b34c6f3 Implement Custom Roadmap minor features (#4565)
* Remove roadmap type

* Add Edit Roadmap button

* Add Edit Roadmap permission

* Add Edit and Share roadmap button

* Remove Margin

* Implement Discoverable Checkbox

* Add Loading State for buttons
2023-10-09 08:44:30 +01:00
Kamran Ahmed
93c2043f23 Fix warning in hero roadmap 2023-10-08 18:38:02 +01:00
Saleh Hashemi
d2da3c8621 update checkout version to v4 (#4559) 2023-10-07 22:15:01 +01:00
Kamran Ahmed
4aa8f15c07 Add email icon in footer 2023-10-07 15:31:24 +01:00
Arik Chakma
ceb4c3b95d Remove invited members from sharing settings (#4555)
* Fix team member list

* Minor change
2023-10-06 19:00:48 +01:00
Kamran Ahmed
7ec5e30b51 Hero roadmap section updates 2023-10-06 19:00:08 +01:00
Kamran Ahmed
e5e0a7c8c5 Add teams banner 2023-10-04 20:32:28 +01:00
Kamran Ahmed
90f3ffe270 Add banner for teams 2023-10-04 16:13:41 +01:00
Kamran Ahmed
ce47a7433e Teams button in navigation 2023-10-04 15:44:34 +01:00
Selva Muthu Kumaran
21b8358683 roadmap-aspnet-change-tracker-api.md (#4546)
aspnet-change-tracker-api URL fixed
fixes : #4544
2023-10-04 20:40:45 +06:00
Kamran Ahmed
e1751b105f Add team page 2023-10-04 15:28:46 +01:00
Kamran Ahmed
e43bea7c40 Setup redirects on the teams page 2023-10-04 15:22:20 +01:00
Kamran Ahmed
5fa669aec2 Update team page 2023-10-04 15:06:59 +01:00
Kamran Ahmed
4b8f868b2b Add roadmaps and friends to account dropdown 2023-10-04 10:34:29 +01:00
Kamran Ahmed
a0743a8272 Fix sharing options button 2023-10-04 10:30:28 +01:00
Arik Chakma
2cae13c090 Add Members while Transferring Roadmap (#4534)
* Add members while Transferring Roadmap

* Implement Responsive in Roadmaps page
2023-10-04 10:15:56 +01:00
Kamran Ahmed
0bf287f1d6 Add features to pricing 2023-10-04 10:12:08 +01:00
Kamran Ahmed
d7d819b4b3 Add teams introduction page 2023-10-03 21:07:53 +01:00
Kamran Ahmed
29cff6a6f8 Update badge 2023-10-02 17:34:51 +01:00
Kamran Ahmed
044df81b7a Creator details on roadmap page 2023-10-02 17:03:20 +01:00
Arik Chakma
3151ee5021 Add Creator Details (#4530)
* Add Creator details

* Add Skeleton Loading
2023-10-02 16:37:30 +01:00
Kamran Ahmed
e6ce9f40ee Update roadmap contribution template 2023-10-02 15:50:42 +01:00
Kamran Ahmed
3b5e3c44f9 Update label for roadmap creation 2023-10-02 15:10:48 +01:00
Kamran Ahmed
c286e0a6f8 Increase max team member count 2023-10-01 03:24:16 +01:00
linxiaowang
3bebe0c1de fix(typo): fix typo in 101-instanceof-operator.md (#4514) 2023-10-01 03:00:55 +06:00
Sherkhan Azimov
9845fe624a separate articles in 107-domain-name-system.md (#4517)
Transfer an article to a new line
2023-10-01 02:59:02 +06:00
Nicky Lim
4b2b2ebe8c Fix typo cpp 104 index (#4520) 2023-09-30 21:40:03 +06:00
Arik Chakma
82c2aaacc3 Fix Roadmap Share Link (#4522) 2023-09-30 14:48:04 +01:00
Kamran Ahmed
6d1edb76c7 Fix failing build 2023-09-30 14:28:16 +01:00
Kamran Ahmed
5d57d5baaf Update deployment workflow 2023-09-30 14:25:25 +01:00
Kamran Ahmed
d31d626c61 Update deployment workflow 2023-09-30 14:23:00 +01:00
Kamran Ahmed
71bf34e683 Add personal token 2023-09-30 14:17:47 +01:00
Kamran Ahmed
93a91b1d9b Fix failing build 2023-09-30 14:14:47 +01:00
Kamran Ahmed
18c8bd14b2 Fix failing build 2023-09-30 14:13:06 +01:00
Kamran Ahmed
e34695e334 Fix failing build 2023-09-30 14:03:49 +01:00
Arik Chakma
8310671123 Allow creating custom roadmaps (#4486)
* wip: custom roadmap renderer

* wip: custom roadmap events

* wip: roadmap content

* wip: svg styles

* wip: custom roadmap progress

* Render progress

* Shortcut progress

* Progress Tracking styles

* wip: edit and share button

* fix: disabled the share button

* wip: content links rendering

* Fix progress share

* Replace disabled with `canShare`

* wip: show custom roadmaps

* wip: users all roadmaps

* fix: create roadmap api

* chore: roadmap sidebar icon

* wip: content links

* Update links color

* Create roadmap home

* Create Roadmap button

* Roadmap type

* chore: share progress modal

* wip: share roadmap

* wip: change visibility

* chore: custom roadmap progress in activity

* wip: custom roadmap share progress

* chore: friend's roadmap

* wip: custom roadmap skeleton

* chore: roadmap title

* Restricted Page

* fix: skeleton loading width

* Fix create roadmap button

* chore: remove user id

* chore: pick roadmap and share

* chore: open new tab on create roadmap

* chore: change share title

* chore: use team id from params

* chore: team roadmap create modal

* chore: create team roadmap

* chore: custom roadmap modal

* chore: placeholde roadmaps

* chore: roadmap hint

* chore: visibility label

* chore: public roadmap

* chore: empty screen

* chore: team progress

* chore: create roadmap responsive

* chore: form error

* chore: multi user history

* wip: manage custom roadmap

* chore: empty roadmap list

* chore: custom roadmap visit

* chore: shared roadmaps

* chore: shared roadmaps

* chore: empty screen and topic title

* chore: show progress bar

* Implement Error in topic details

* Add Modal close button

* fix: link groups

* Refactor roadmap creation

* Refactor roadmap creation

* Refactor team creation

* Refactor team roadmaps

* Refactor team creation roadmap selection

* Refactor

* Refactor team roadmap loading

* Refactor team roadmaps

* Refactor team roadmaps listing

* Refactor Account dropdown

* Updates

* Refactor Account dropdown

* Fix Team name overflow

* Change Icon color

* Update team dropdown

* Minor UI fixes

* Fix minor UI

* Flicker fix in team dropdown

* Roadmap action dropdown with responsiveness

* Team roadmaps listing

* Update team settings

* Team roadmaps listing

* fix: remove visibility change

* Update roadmap options modal

* Add dummy renderer

* Add renderer script

* Add generate renderer script

* Add generate renderer

* wip: add share settings

* Update

* Update UI

* Update Minor UI

* Fix team issue

* Update Personal roadmaps UI

* Add Roadmap Secret

* Update teams type

* Rearrange sections

* Change Secret name

* Add action button on roadmap detail page

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-09-30 13:55:24 +01:00
Kamran Ahmed
d45c8f9cb2 Update coursera links 2023-09-29 17:26:54 +01:00
Kamran Ahmed
573263ed74 Fix back button not working 2023-09-26 21:18:35 +01:00
Kamran Ahmed
f27aa58ac3 Fix back button not working 2023-09-26 21:14:26 +01:00
Saleh Hashemi
518cf4ce73 Fix broken Git Tutorial for Dummies link 2023-09-26 19:18:42 +06:00
Akshay Jagiasi
7bde0b3f44 Add EVM link (#3727) 2023-09-22 20:46:09 +01:00
Lane Wagner
4b6dcb3a37 Add golang course (#3730) 2023-09-22 20:45:29 +01:00
Alyxson Marques
c50200bfe7 Added links to exception handling javascript roadmap (#3775)
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-09-22 20:40:06 +01:00
Akshay Jagiasi
5ffb9fad9f Add solana whitepaper (#3781)
* Solana whitepaper added

* Update src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/109-blockchains/100-solana.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-09-22 20:39:06 +01:00
The New Stack
dd7d312aa1 Add TypeScript resources (#3789)
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-09-22 20:34:58 +01:00
The New Stack
81447f6b43 Add TypeScript vs JavaScript (#3790) 2023-09-22 20:33:15 +01:00
Valentino Traverso
fe711f498d Fix typos (#3794) 2023-09-22 20:32:50 +01:00
rane gray
c65f12fcb8 Add zustand resource (#3803)
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-09-22 20:27:37 +01:00
Tim Jonas Meinerzhagen
cab075bf5b Fix salting typo link (#3820) 2023-09-22 20:24:50 +01:00
Benjamin Norval
685021493c Fix typos and wording (#3902)
Improved grammar and wording choices for the file of `choose-image-format-approprietly.md` in Frontend Performance - Best Practices.
2023-09-22 20:24:29 +01:00
Rafael Bicalho
482cf64bf5 Update CORS Resources (#3908)
* Update 106-cors.md

* Update 102-cors.md

* Update 106-cors.md
2023-09-22 20:23:59 +01:00
keeplz
9051e22476 Add event loop resource (#3921)
add a video for event loop, it's js conf in asia 2018
2023-09-22 20:23:30 +01:00
Selva Muthu Kumaran
1b538b399f Fix backend link (#4484)
backend-roadmap-throttling- missed URL fixed
fixes : #4473
2023-09-22 20:22:40 +01:00
アドヴァイス
05673087c5 Remove dead link (#4489)
In the "Rate limiting" section, Blogs and tutorials on RxJS refers to a 404 page.

The dead link has been fixed with the correct and appropriate link.
2023-09-22 20:21:59 +01:00
Orca
5256df9c07 Fix typos (#4500)
- Fixed a typo
- Fixed the title of the freecodecamp link
2023-09-22 20:19:23 +01:00
Orca
ddf8884501 Update 100-builtin-modules.md (#4501)
- Removed a redundant `events` entry
2023-09-22 20:18:26 +01:00
steph
05492b60ee Update blockchain resources (#4502) 2023-09-22 20:18:04 +01:00
Kamran Ahmed
b92ae9b836 Increase line height of question answers 2023-09-22 05:27:06 +01:00
Kamran Ahmed
83df0da6b4 Enable indexing of question pages 2023-09-22 05:22:45 +01:00
Kamran Ahmed
a58b78bfe9 Hide account dropdown when user clicks anywhere 2023-09-22 05:20:28 +01:00
Kamran Ahmed
2fa41f583e Add react questions 2023-09-22 05:15:52 +01:00
Kamran Ahmed
80819f8914 UI fixes for questions 2023-09-22 05:08:24 +01:00
Arik Chakma
edcf0e683d Add react questions (#4492)
* Add more questions

* wip: add lazy, conditional questions

* wip: Add RSC questions

* wip: add component's lifecycle

* wip: add dependency array question

* wip: add comment and state

* chore: add more questions

* wip: add list question

* wip: add directive questions

* fix: conventions and examples

* wip: add custom hook question

* wip: add hydration question

* wip: add error boundary example

* wip: add strict mode question

* wip: investigating slow react app

* Update src/data/question-groups/react/react.md

* Update src/data/question-groups/react/react.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-09-22 05:02:12 +01:00
Arik Chakma
aa6d48b775 Add more questions and remove setState 2023-09-19 07:34:29 +06:00
Kamran Ahmed
3e622ecc2c UI Change for Title Question 2023-09-18 18:27:48 +01:00
Kamran Ahmed
ea5c3c2c01 UI Change for Title Question 2023-09-18 18:25:38 +01:00
Kamran Ahmed
8dc0424823 Update description meta for frontend, backend, devops 2023-09-18 17:39:54 +01:00
Kamran Ahmed
f3b16eb50f Fix headings 2023-09-18 16:23:44 +01:00
Kamran Ahmed
e07112a3a9 Remove duplicate questions 2023-09-18 16:19:39 +01:00
Kamran Ahmed
81983b6b06 Add more questions 2023-09-18 16:15:12 +01:00
Kamran Ahmed
bc6b100c26 Add introductory paragraph on roadmaps 2023-09-16 11:20:23 +01:00
Ihor
846bbc1533 fix(typescript): fix template lineral type definition (#4474) 2023-09-13 21:09:45 +01:00
roadmap bot
0b0168b40f chore: add resource under qa:qa-basics:project-management:atlassian 2023-09-12 17:05:41 +01:00
Matvey Volkov
4c9371ee74 Fix issue in typescript (#3922)
json_build_object is used to create json object and get it
2023-09-12 17:03:57 +01:00
Toshita Singh
bb9cc31e8a Fix typo in prototypal inheritance (#3930)
Completed missing property name used to set the prototype of an object.
2023-09-12 16:44:01 +01:00
Jakub Olszewski
8585857cc3 Add ChangeNotifier and ValueNotifier tutorials (#3997)
Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-09-12 16:41:36 +01:00
JasonMan34
8c2e812667 Fix recursive types example in typescript roadmap (#4022)
Co-authored-by: Itamar Zwi <itamarz@amplicy.io>
2023-09-12 16:39:19 +01:00
Olawuwo Abideen
bfbee6da0f Add a resource for REST (#4025) 2023-09-12 16:38:47 +01:00
Selva Muthu Kumaran
8057b218a0 Fix video link (#4398)
Computer network | Google IT Support certificate video fixed
fix : #4396
2023-09-12 16:38:10 +01:00
Selva Muthu Kumaran
c3d24a65d1 Fix appium link (#4402)
QA-roadmap-appium website - new link provided
fix: #4205
2023-09-12 16:37:45 +01:00
Tomasz Mikulski
67beb4e8c4 Fix broken http link to presentation - use https (#4405) 2023-09-12 16:37:15 +01:00
Selva Muthu Kumaran
35066d5b70 Fix video lini (#4408)
python-roadmap-oop-classes-python OOP tutorial - fixed video link
fixes : #4221

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-09-12 16:36:59 +01:00
Julien Alric
bb76ae411f Update system-design.json fix typo (#4414) 2023-09-12 16:36:22 +01:00
Mohit Rajput
98ea93da8c fix incorrect url change (#4415) 2023-09-12 16:36:06 +01:00
Selva Muthu Kumaran
a69f0cc1b1 Fix YARP in .net roadmap (#4416)
asp.net-core-YARP-description fixex
fixes : #4406
2023-09-12 16:35:36 +01:00
Michał Gałązka
e50e75479a Fixed PHP official website address in backend roadmap (#4417)
changed from php.org to php.net
2023-09-12 16:35:13 +01:00
FranMD
f4592b1e58 Update URL for "Enabling HTTPS on Your Servers" site (#4418) 2023-09-12 16:34:50 +01:00
Selva Muthu Kumaran
45c88da643 Add information about local scope (#4420)
javascript-roadmap-scope-variable-local scope description added
fixes : #4388
2023-09-12 16:34:32 +01:00
Mikhail Ostashchenko
a54fe0d1ba Fix broken links (#4421) 2023-09-12 16:33:51 +01:00
Leo Wang
e1f494776e Fix content link in contributing.md (#4431)
Co-authored-by: Leo Wang <ab0988956087@gamil.com>
2023-09-12 16:33:08 +01:00
Muhammad Afzal
11272da330 docs: add content for Google Cloud Functions (#4443) 2023-09-12 16:31:40 +01:00
Andret Carpizo
8903f11f02 Fix Template Specialization Index CodeBlock for const in printData (#4446) 2023-09-12 16:31:24 +01:00
Selva Muthu Kumaran
8ca9f976cd python-roadmap-decorators (#4448)
python-roadmap-modules-decorators - new link for python decorators in 1 minute
2023-09-12 16:30:57 +01:00
Blake
488521d2e3 Update URL for OpenID Link (#4459) 2023-09-12 16:30:40 +01:00
Kirill Bryntsev
072953c69a Add information about function pointer (#4460) 2023-09-12 16:30:27 +01:00
Akash Sharma
79a656e171 Fixing PRIMARY_KEY NULL constraint (#4465) 2023-09-12 16:27:19 +01:00
Aus Gomez
b565ce9bce issue-442 (#4470) 2023-09-12 16:26:30 +01:00
Kamran Ahmed
460ea8b95a Fix icon on the team creation page 2023-09-06 17:39:04 +01:00
Kamran Ahmed
26ab7b9098 Remove EKS from devops beginner 2023-09-05 11:25:39 +01:00
Kamran Ahmed
0eebcd03a4 Add questions on homepage 2023-09-03 23:18:00 +01:00
Kamran Ahmed
9c75404d0c feat: responsiveness of questions 2023-09-03 23:12:27 +01:00
Kamran Ahmed
61c3c88fb6 Integrate question backend 2023-09-03 19:57:51 +01:00
Kamran Ahmed
1ed54bad90 Change confetti to show on completion of quiz 2023-09-03 17:07:39 +01:00
Kamran Ahmed
437d879af3 feat: add finished screen for questions 2023-09-03 14:11:56 +01:00
Kamran Ahmed
58dd3f2f41 Fix flickering numbers 2023-09-03 12:17:30 +01:00
Kamran Ahmed
cbe758349c Add reset progress functionality 2023-09-03 12:14:20 +01:00
Kamran Ahmed
a847d0b08d Show user progress 2023-09-03 12:02:34 +01:00
Kamran Ahmed
548b7f31f9 Fix confetti does not show up properly 2023-09-03 11:49:00 +01:00
Kamran Ahmed
2e18d5a563 feat: question page with progress tracking 2023-09-03 03:20:59 +01:00
Kamran Ahmed
5bbcd85e6c Update question ui 2023-09-02 23:09:02 +01:00
Kamran Ahmed
1eb0e8869a fix: broken type on hero 2023-09-02 18:00:58 +01:00
Kamran Ahmed
1b74e86db7 Custom roadmaps listing on homepage 2023-09-02 17:49:07 +01:00
Kamran Ahmed
07b2cb0f9b fix: ui 2023-09-02 02:04:44 +01:00
Kamran Ahmed
fba926625d fix: scroll to top when user hides answer 2023-09-02 01:59:07 +01:00
Kamran Ahmed
e4c29b03ab feat: question page ui 2023-09-02 01:56:06 +01:00
Kamran Ahmed
2a7fd53c8b feat: question page confetti 2023-09-01 20:07:17 +01:00
Kamran Ahmed
4cb905b69a feat: design for question page 2023-09-01 18:58:00 +01:00
Kamran Ahmed
a123fc0828 fix: client:only=react 2023-09-01 17:25:10 +01:00
Kamran Ahmed
e15a36a2ce Fix accessibility issues 2023-09-01 00:04:25 +01:00
Kamran Ahmed
ca32c814da Fix accessibility issues 2023-08-31 23:54:27 +01:00
Kamran Ahmed
c4ef2bfcb4 fix: broken build 2023-08-31 23:23:08 +01:00
Kamran Ahmed
bb42c809fb fix: broken build 2023-08-31 23:21:18 +01:00
Kamran Ahmed
03d0a32fd6 chore: upgrade to astro v3 (#4437) 2023-08-31 23:17:51 +01:00
Kamran Ahmed
b8c90948f9 chore: trigger build 2023-08-31 19:05:54 +01:00
Kamran Ahmed
5c57a84e82 chore: migrate from preact to react (#4435) 2023-08-31 17:19:18 +01:00
Kamran Ahmed
c274feced1 Fix broken build 2023-08-30 18:56:36 +01:00
Kamran Ahmed
cdb9153029 Change in grid item design 2023-08-30 18:51:20 +01:00
Jamie Douglas
d3bebfeea6 Updated link to Gradle site (#4423) 2023-08-30 14:20:28 +01:00
Pawel Janicki
68f9e4576b Fix ArgoCD Beginner tutorial link (#4425)
https://github.com/kamranahmedse/developer-roadmap/issues/4424
2023-08-30 14:20:05 +01:00
Leo Wang
051bcce933 Fix video link in Python OOP classes (#4427)
Co-authored-by: Leo Wang <ab0988956087@gamil.com>
2023-08-30 14:19:40 +01:00
Kamran Ahmed
e3793b00c7 Change background color of grid 2023-08-29 18:35:53 +01:00
Kamran Ahmed
f256a5a9b0 Fix logout not working 2023-08-28 17:51:34 +01:00
Mohit Rajput
7e18c97e78 from inside compilerOptions to outside exclude (#4410) 2023-08-28 11:26:46 +06:00
Selva Muthu Kumaran
c95caccae5 golang\conditional-statement (#4400)
* golang\conditional-statement

golang\conditional-statement\golang programs switch case - new link provided

* Add both conditional statements

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2023-08-26 22:47:33 +06:00
Juan Pablo Partridge
102c57e925 Add mongodb roadmap in backend content (#4035) 2023-08-26 00:15:25 +01:00
Mikhail Ostashchenko
1ec6005fe1 Fix code style (#4356) 2023-08-25 19:40:58 +01:00
KT
ce41b3a955 Remove duplicate resource (#4375)
Remove resource hosting a duplicate of another listed resource.
2023-08-25 19:40:35 +01:00
Selva Muthu Kumaran
eea79968e2 Fix data type content (#4381)
data type (struct and class) clarification
2023-08-25 19:39:37 +01:00
Selva Muthu Kumaran
538e41307c Fix video link (#4385)
javascript\variable\scope\understanding global local function block scope
2023-08-25 19:39:01 +01:00
Mikhail Ostashchenko
79fcf2400f SFINAE fix (C++) (#4390)
When you try to use these function templates, there can be ambiguity issues. If you call foo with an arithmetic type, both template overloads will be considered valid, and the compiler won't know which one to choose.

You can use specialization or tag dispatching to properly handle different cases.
2023-08-25 19:38:41 +01:00
Tushar Daiya
0da1edaa55 Fix link in python roadmap (#4393) 2023-08-25 19:37:46 +01:00
Kamran Ahmed
b04b8c702f Cookie sharing across sub-domains 2023-08-25 02:19:10 +01:00
Bartłomiej Majowicz - Unlimitech
1a7a6db50c Fix typos (#4362)
* Fix misspell.

* Add missing link title.

* Fix add missing word.
2023-08-22 12:37:32 +01:00
Mikhail Ostashchenko
7072c4cf80 Fix code in c++ (#4373) 2023-08-22 12:19:08 +01:00
Mikhail Ostashchenko
f2b29f80f9 Add Reverse iterator (C++) (#4374) 2023-08-22 12:18:19 +01:00
roadmap bot
76c2686269 chore: add resource under cpp:language-concepts:type-casting 2023-08-20 19:14:11 +01:00
Kamran Ahmed
b7728fa6fd Change related roadmaps + faqs to h2 2023-08-18 18:52:50 +01:00
Kamran Ahmed
ca5bae687b Update AI and Data Scientist roadmap 2023-08-18 14:29:33 +01:00
Kamran Ahmed
face1eefbb Update data scientist roadmap 2023-08-17 19:39:08 +01:00
Kamran Ahmed
498ef2eb3b Change feedback popup design 2023-08-17 17:20:19 +01:00
Kamran Ahmed
80d53a9c5d Add AI and Data Scientist Roadmap 2023-08-17 13:57:42 +01:00
Arik Chakma
e0eccaa30e Add team feedback popup (#4341)
* wip: submit feedback popup

* wip: feedback popup state
2023-08-17 13:45:22 +01:00
Erasmo Hernández
c43ee13c94 Fix typo from bug 4210 (#4211) 2023-08-17 03:01:58 +01:00
Kyrylo Nehaturov
b57c4cb558 fix: removed dublicated link (#4217)
removed dublicated link in react roadmap
2023-08-17 03:01:29 +01:00
Kyrylo Nehaturov
c236bf9bf9 fix: removed duplicate link in react 103-rendering/104-events (#4218)
removed duplicate link in react roadmap section 103-rendering/104-events
2023-08-17 03:01:15 +01:00
Kyrylo Nehaturov
c92c67acc9 fix: added link + rewritten link text react 106-state-management (#4219)
I found more obvious such resources list, with the documentation as  the starting resource and then the link for the repo as the next one
2023-08-17 03:01:01 +01:00
Mirac Seref
bec59ed630 Update 101-functional-components.md (#4233)
Fix link issue

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-08-17 03:00:34 +01:00
Mark Puchala 2/
7f800f2717 Update history-of-javascript.md (#4287)
Fix reference to non-existent comment section.
2023-08-17 02:58:57 +01:00
carmen
e5579ef7d1 fix: removed unavailable youtube link (#4288) 2023-08-17 02:58:25 +01:00
Gary Y
9e5baad85f Update 103-reporting.md (#4298)
The current link leads to an outdated page with a 404.

https://www.ministryoftesting.com/dojo/series/the-testing-planet-2019/lessons/the-art-of-the-bug-report

This is the new updated link.
https://www.ministryoftesting.com/articles/11b82aee?s_id=15465627
2023-08-17 02:56:42 +01:00
Hugo Poças
146022d1ed Removed duplicate sentence (#4325)
removed the sentence:
"JOIN Queries
Absolutely, here’s a brief summary about SQL JOIN Queries:"

It's the same information as the sentence below and it doesn't give the impression it's answering anything.
2023-08-17 02:56:22 +01:00
obvTiger
6af8033764 Remove extra "s" on 102-razor-pages.md (#4329) 2023-08-17 02:56:08 +01:00
Nikola Hristov
e4d6cd9f41 Restores astro-compress (#4339)
* Restores astro-compress

* squash!
2023-08-17 02:55:49 +01:00
Mikhail Ostashchenko
5cff162a94 Change to the correct data type (#4343) 2023-08-17 02:54:56 +01:00
Kamran Ahmed
3b7e5d5ce2 Add AI and Data Scientist roadmap 2023-08-17 02:52:35 +01:00
Kamran Ahmed
6bc7c2f48c Accept friend request to redirect to friends page 2023-08-15 00:18:49 +01:00
Kamran Ahmed
458396f782 Fix cookie not removed 2023-08-13 20:06:19 +01:00
Kamran Ahmed
bb7f1f4d67 Update frontend roadmap 2023-08-12 14:25:23 +01:00
Jesús
430350fe88 Fix typo in Method Overriding in Typescript (#4306) 2023-08-10 14:30:09 +01:00
Shawn Gestupa
c1d37dead3 update link of "Functional Components and Props" (#4317) 2023-08-10 14:29:38 +01:00
Abdul Wahab
eafd36f6aa Fixed: Function Expression Syntax (#4324)
The syntax for Function Expression was incorrect. It was an example of a function declared using Function Declaration.
2023-08-10 14:28:44 +01:00
Abdul Wahab
ea70632de1 Fix instanceOf mistake (#4322)
instanceof is a runtime check and interface and types don't exist during runtime.

Also TypeScript has a structural type system, which means that they are matched according to the structure of the object and types - not according to instances.

For example:

interface Person {
    name: string;
    age: number
}

const person = {
    name: "Ken",
    age: 25
}

if (person instanceof Person) // Error
2023-08-10 13:14:40 +01:00
roadmap bot
08e29c2c14 chore: add resource under kubernetes:kubernetes-introduction:key-concepts-terminologies 2023-08-09 00:25:05 +01:00
roadmap bot
00b27eabd6 chore: add resource under cyber-security:networking-knowledge:basics-of-nas-and-san 2023-08-09 00:24:07 +01:00
roadmap bot
667e7f4c7f chore: add resource under devops:serverless:cloudflare 2023-08-09 00:23:45 +01:00
stokey
19edadcc18 fix: broken link to CompTIA A+ 220-1101 - (#4309)
Added a link to channel with a query searching for CompTIA A+ 220-1101 in Professor Messer channel
2023-08-08 22:13:06 +01:00
Kamran Ahmed
c5cb2e1877 Fix broken build 2023-08-08 22:10:55 +01:00
Kamran Ahmed
3a09982ff6 Show received friend request count in sidebar 2023-08-08 22:00:04 +01:00
Kamran Ahmed
1d716a9438 Add confirmation on withdraw request 2023-08-08 21:30:33 +01:00
Kamran Ahmed
b69889cc29 Add friends listing 2023-08-08 21:04:44 +01:00
Kamran Ahmed
92295a7906 Friend progress tracking 2023-08-08 19:50:12 +01:00
Kamran Ahmed
2c1ab6b19d Accept, reject friends 2023-08-08 19:29:50 +01:00
Kamran Ahmed
fb3fe8be42 Friends listing page 2023-08-07 19:48:22 +01:00
Kamran Ahmed
c3b34cde3f Add rejected user status 2023-08-07 18:19:24 +01:00
Kamran Ahmed
a30cb170d6 Remove friend 2023-08-07 18:14:48 +01:00
Kamran Ahmed
0a5eeae68c Add friend page 2023-08-07 18:02:25 +01:00
Kamran Ahmed
9ed60d836a Add friends invite page 2023-08-04 18:23:43 +01:00
Arik Chakma
c720888f2b Add functionality to share progress (#4279)
* wip: user progress modal

* wip: modal loading state

* wip: share progress

* chore: best practices share

* chore: prettier

* fix: classname

* Progress button design

* Progress modal

* Update

* Update

* Progress modal refactoring

* Remove event binding for progress

* Update

* UI changes on progress

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-08-02 20:49:55 +01:00
Barış Tanrıverdi
2018b9bf38 Fix typos in history of JavaScript (#4240)
Minor text formatting changes and punctuation fixes were made for a consistency of the article structure and clear understanding.
2023-07-31 17:00:02 +01:00
yandif
1ca36e8bfa Correct 'CDNss' to 'CDNs' (#4259) 2023-07-31 16:35:57 +01:00
Maitrayee Khalasi
c0e2e541ca Update the link of youtube channel (#4261)
Updated the link of youtube channel in c++ roadmap, what is c++
2023-07-31 16:35:44 +01:00
Maitrayee Khalasi
04478272c2 Update the link of youtube channel (#4262)
Updated the link of youtube channel in c++ roadmap, bitwise operators
2023-07-31 16:35:19 +01:00
Bartłomiej Majowicz - Unlimitech
9c2e9c1be6 Fix spelling mistake (#4265)
* Fix misspell.

* Add missing link title.
2023-07-31 16:35:01 +01:00
Tomasz Mikulski
77310d24d8 Update 102-sharding-strategies.md (#4269)
Typo in dat(a)base word
2023-07-31 16:34:16 +01:00
Kamran Ahmed
6524da9a9a Add feedback link 2023-07-31 16:04:04 +01:00
roadmap bot
c1d39d24db chore: add resource under ux-design:behavior-change-strategies:cheating:defaulting 2023-07-29 14:41:59 +01:00
roadmap bot
8a747acabd chore: add resource under flutter:state-management:bloc 2023-07-29 14:41:45 +01:00
Mithilesh Pawar
18caaa9d0a fix(typo): fixed typo in js resources (#4271) 2023-07-29 16:56:20 +06:00
Kamran Ahmed
c066ba6c52 Team dropdown 2023-07-28 19:01:10 +01:00
Kamran Ahmed
35148cb8a3 Responsiveness 2023-07-28 18:46:36 +01:00
Kamran Ahmed
5b541dfb3d Updates to team functionality 2023-07-28 18:20:38 +01:00
Arik Chakma
fc8ce296be Team Member listing and Progress Reminder (#4264)
* wip: team member listing

* wip: no progress alert

* wip: mail icon

* feat: Send progress reminder

* fix: guard clause

* chore: resend invite
2023-07-28 15:11:58 +01:00
Kamran Ahmed
543d3b47ce Hide recommendations and reference from roadmaps for teams 2023-07-27 22:00:25 +01:00
Kamran Ahmed
21008de3d1 Prepare roadmaps for team edits 2023-07-26 21:28:15 +01:00
Kamran Ahmed
8787ed46c5 Toast message on leaving team 2023-07-26 20:01:03 +01:00
Kamran Ahmed
94ad20fc04 Remove progress hint 2023-07-26 19:19:57 +01:00
Kamran Ahmed
7f5bbf743a Member progress modal 2023-07-26 19:19:32 +01:00
Kamran Ahmed
f48a351c99 Updating personal progress from popup 2023-07-26 19:02:46 +01:00
Arik Chakma
b85639d876 Add update progress functionality in modal (#4256)
* chore: add update progress in modal

* chore: show tracking for current user

* chore: current user header

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-07-26 15:43:55 +01:00
Kamran Ahmed
14f9ad9530 Highlight user personal progress 2023-07-26 15:41:39 +01:00
Kamran Ahmed
076b866430 Personal progress indicator in teams 2023-07-26 15:24:29 +01:00
Kamran Ahmed
7aca57c3e4 Team roadmaps listing page 2023-07-25 21:34:00 +01:00
Kamran Ahmed
36cd03f14f Use the same add roadmap modal 2023-07-25 20:50:40 +01:00
Kamran Ahmed
5bc33cb527 Member progress item sorting 2023-07-25 20:05:47 +01:00
Kamran Ahmed
5d3202e065 Add skip button for teams 2023-07-25 18:56:40 +01:00
Kamran Ahmed
5cf286a753 Update team sizes and copy 2023-07-25 18:32:43 +01:00
Kamran Ahmed
0addc56123 Update the select roadmaps modal 2023-07-25 18:24:32 +01:00
Arik Chakma
3182e2a599 Show current user progress first (#4255)
* wip: progress sorting

* chore: show current user progress first

* fix: team guard

* fix: user progress sort
2023-07-25 17:36:49 +01:00
Kamran Ahmed
8c7fb8cab5 Copy change 2023-07-25 16:51:34 +01:00
Arik Chakma
f61d360ee7 Add select roadmap modal (#4253)
* wip: roadmap selector modal

* wip

* fix: typo

* fix: prettier

* chore: close icon
2023-07-25 16:49:21 +01:00
Kamran Ahmed
29d91be094 Add cursors 2023-07-25 13:21:57 +01:00
Kamran Ahmed
8ee56576ea Update copy for team creation 2023-07-25 13:21:56 +01:00
Arik Chakma
8e945f5e1c Leave Team confirmation popup (#4254)
* wip: leave team popup

* fix: leave warning
2023-07-24 23:38:49 +01:00
Kamran Ahmed
ac48f4c441 Enable teams 2023-07-24 17:26:44 +01:00
Kamran Ahmed
34d0cde165 fix: toast not appearing 2023-07-20 19:55:45 +01:00
Kamran Ahmed
03ba0c384b Add teams support 2023-07-20 19:24:34 +01:00
Arik Chakma
bbe8125fc1 chore: add youtube and twitter icon (#4241) 2023-07-20 17:50:06 +01:00
Balaji Sivasakthi
0c64223ec1 fix(typo): package manager's C++ Archive Network (cppan) heading (#4118)
* fix(typo): package manager's C++ Archive Network (cppan) heading

* Update pnpm-lock.yaml
2023-07-15 13:30:16 +06:00
Nicolas Walcker de Miranda
3a022926de fix check gzip compression url (#4208)
* fix: change check gzip compression url

* remove package-lock.json
2023-07-14 18:32:47 +01:00
Balaji Sivasakthi
93a6ae3f81 fix(typo): fixed typo in cpp - main() function heading (#4120) 2023-07-14 21:57:48 +06:00
Balaji Sivasakthi
42b3595367 fix(typo): fixed typo in cpp namespaces (#4122) 2023-07-14 21:56:21 +06:00
Sadegh Motevali
39278cc97b fix incorrect pyramid document URL (#4198) 2023-07-14 21:54:51 +06:00
Kyrylo Nehaturov
c83d20d63c Fix: removed dublicate link in 108-javascript-expressions-and-operators (#4196)
Removed dublicate link in JS roadmap
2023-07-12 12:57:09 +01:00
Kamran Ahmed
6e8770c8c4 Add clone note in readme 2023-07-11 15:21:12 +01:00
Tabish Naqvi
3457f7495a Clone size fix ISSUE #3312 (#4130)
* Issue #4110 Broken Link Fix

* added note in readme.md fixing large clone size Issue #3312
2023-07-11 15:18:21 +01:00
Dmitrii Goriachev
07acb17459 Update links to new react documentation (#4134)
* update react error boundary link

* update links to JSX

* actualize Component Life Cycle overview and links

* update links to event handling in react

* actualize HOC overview
2023-07-11 14:03:28 +01:00
Davidson Fellipe
77cd0ecf26 Fix typos (#4135) 2023-07-11 04:12:00 +01:00
Reyhan4j02
eccc0302f2 Update 100-installing.md (#4143)
Previously the MinGW-64 link redirected to an error 404 page 
Fixed it to redirect to the overview page
2023-07-11 04:11:22 +01:00
Kamran Ahmed
7274d8a54e Add new badge to sql roadmap 2023-07-11 04:00:31 +01:00
Kamran Ahmed
8d19be6232 Fix typos in ux design roadmap 2023-07-11 03:55:42 +01:00
Ritik Ranjan
e0828d11bf Remove trailing spaces/lines (#4177) 2023-07-11 03:54:03 +01:00
Andrei Belokurov
9e7a37d079 Fix invalid link in devops roadmap (#4186)
Updated from 'ext_link:roadmap.sh/python' to 'ext_link:roadmap.sh/backend' and 'ext_link:roadmap.sh/best-practices/aws'.
2023-07-11 03:53:46 +01:00
Kamran Ahmed
76f1592615 Add link to SQL roadmap 2023-07-11 03:53:17 +01:00
Kamran Ahmed
80e80e7d9b Add syntax highlighting for queries 2023-07-11 03:47:48 +01:00
Kamran Ahmed
8692f05f14 Add content for SQL roadmap 2023-07-11 03:45:54 +01:00
Kamran Ahmed
e5705bd6cc Add SQL roadmap 2023-07-10 20:36:53 +01:00
Arik Chakma
f52e6df410 fix: twice social callback call 2023-07-10 21:18:37 +06:00
Kamran Ahmed
c4db994753 Add link to react native roadmap 2023-07-08 16:38:04 +01:00
Arnav K
7bfd3934f8 🔗 fix: broken link in roadmap cpp (#4181) 2023-07-08 18:04:55 +06:00
Gabriel Coelho da Cunha
32dac79565 [Node.js Developer] Update 102-history-of-nodejs.md (#4179)
Deleted broken link of official documentation and added some suggestions of links that can fill in.
2023-07-08 01:01:06 +06:00
roadmap bot
ceb51a18df chore: add resource under aspnet-core:basics-of-csharp 2023-07-06 17:31:00 +01:00
Dimun
c21f217425 Update typo in introduction-to-llms.md (#4159) 2023-07-06 16:10:21 +01:00
Kamran Ahmed
9299326dc2 Field label for the issue template 2023-07-06 16:06:45 +01:00
Kamran Ahmed
fbe597706a Field label for the issue template 2023-07-06 16:03:49 +01:00
Kamran Ahmed
c7b6257c74 Add new template 2023-07-06 16:03:21 +01:00
Kamran Ahmed
dbe6f8589d Fix duplicate title in the issue template 2023-07-06 16:01:32 +01:00
Kamran Ahmed
9139c8eaf8 Fix broken URL 2023-07-06 15:54:00 +01:00
Kamran Ahmed
05451a0f07 Fix typo 2023-07-06 15:51:48 +01:00
Levon
36d4d8e449 Fix Computer Science roadmap MFU cache description (#4174)
Issue ##4172
2023-07-06 15:50:36 +01:00
Kamran Ahmed
fa8551dd31 Rearrange issues 2023-07-06 15:49:29 +01:00
Kamran Ahmed
7cbf8eb72a Add new issue templates 2023-07-06 15:43:55 +01:00
Kamran Ahmed
e739662d49 Add suggest changes button 2023-07-06 15:39:31 +01:00
Kamran Ahmed
e26fa35470 Add roadmap contribution issue template 2023-07-06 15:33:54 +01:00
Kamran Ahmed
37e92fd084 Add roadmap contribution issue template 2023-07-06 15:31:05 +01:00
Kamran Ahmed
0aef3efda9 Add bug report issue template 2023-07-06 15:18:51 +01:00
Kamran Ahmed
7187da853b Add issue template config 2023-07-06 15:10:31 +01:00
roadmap bot
b81dba9f8b chore: add resource under cyber-security:operating-systems:learn-for-each:understand-permissions 2023-07-06 08:40:32 +01:00
roadmap bot
bf0fd62bff chore: add resource under cyber-security:security-skills-and-knowledge:common-distros-for-hacking:kali-linux 2023-07-06 08:39:16 +01:00
roadmap bot
67e6043cbc chore: add resource under cyber-security:security-skills-and-knowledge:uderstand-frameworks:attck 2023-07-06 08:37:48 +01:00
roadmap bot
9d169219ce chore: add resource under cyber-security:networking-knowledge:understand-the-terminology:vm 2023-07-06 08:36:48 +01:00
roadmap bot
8eb6a0f857 chore: add resource under cyber-security:networking-knowledge:understand-the-terminology:arp 2023-07-06 08:36:36 +01:00
roadmap bot
9c2d3bd2d8 chore: add resource under cyber-security:extras:certifications:beginner-certifications:ccna 2023-07-06 08:36:16 +01:00
roadmap bot
d6de73d7d4 chore: add resource under ux-design:human-decision-making:ux-buzzwords:nudge-theory 2023-07-06 08:36:03 +01:00
roadmap bot
8899654937 chore: add resource under cyber-security:networking-knowledge:understand-the-terminology:dmz 2023-07-06 08:35:52 +01:00
roadmap bot
d64cb4116a chore: add resource under cyber-security:networking-knowledge:understand-the-terminology:vlan 2023-07-06 08:35:34 +01:00
roadmap bot
f428849daa chore: add resource under spring-boot:spring-core 2023-07-05 22:23:51 +01:00
roadmap bot
83143f4438 chore: add resource under postgresql-dba:postgresql-infrastructure-skills:kubernetes-deployment 2023-07-05 22:23:35 +01:00
roadmap bot
8adc6cb7b4 chore: add resource under postgresql-dba:installation-and-setup:deployment-in-cloud 2023-07-05 22:23:27 +01:00
roadmap bot
d12eccb6aa chore: add resource under cyber-security:security-skills-and-knowledge:tools-for-unintended-purposes:lolbas 2023-07-05 22:18:17 +01:00
roadmap bot
93a1dedd8f chore: add resource under nodejs:nodejs-logging 2023-07-05 22:18:06 +01:00
roadmap bot
027a4a947a chore: add resource under ux-design:human-decision-making 2023-07-05 22:17:55 +01:00
roadmap bot
67fd8d3d47 chore: add resource under computer-science:design-patterns 2023-07-05 22:17:39 +01:00
roadmap bot
e42532ad7c chore: add resource under frontend:web-security-knowledge:content-security-policy 2023-07-05 22:16:52 +01:00
roadmap bot
944a35a905 chore: add resource under cyber-security:extras:ctfs:hack-the-box 2023-07-05 22:16:04 +01:00
roadmap bot
9f620866cb chore: add resource under react:cli-tools:create-react-app 2023-07-05 22:15:27 +01:00
roadmap bot
4d74e9c47c chore: add resource under devops:operating-systems:linux:ubuntu 2023-07-05 22:11:43 +01:00
roadmap bot
f1a37deab2 chore: add resource under cpp:basic-operations:loops 2023-07-05 22:10:16 +01:00
roadmap bot
f36dd4b964 chore: add resource under cyber-security:security-skills-and-knowledge:cia-triad 2023-07-05 22:10:00 +01:00
Kamran Ahmed
80c842412a Add docker course link 2023-07-05 22:09:35 +01:00
roadmap bot
219ef68001 chore: add resource under spring-boot:spring-security 2023-07-05 22:08:19 +01:00
roadmap bot
ab8a551a96 chore: add resource under java:java-advanced-topics:memory-management 2023-07-05 22:08:12 +01:00
roadmap bot
467382879d chore: add resource under python:python-frameworks:fastapi 2023-07-05 22:07:57 +01:00
roadmap bot
258f6cd0f0 chore: add resource under postgresql-dba:rdbms-concepts:object-model:tables 2023-07-05 22:07:46 +01:00
roadmap bot
2c3bf1ebbc chore: add resource under postgresql-dba:rdbms-concepts:object-model:data-types 2023-07-05 22:07:37 +01:00
roadmap bot
1113b698be chore: add resource under postgresql-dba:rdbms-concepts:object-model:queries 2023-07-05 22:07:27 +01:00
roadmap bot
eefcc6866b chore: add resource under cyber-security:networking-knowledge:osi-model 2023-07-05 22:07:17 +01:00
roadmap bot
34185ac8fb chore: add resource under devops:serverless 2023-07-05 22:06:24 +01:00
roadmap bot
c1e85ce422 chore: add resource under angular:zones 2023-07-05 22:05:54 +01:00
Iwin Issac
6ed270112d Fixed Broken Link in 100-html.md (#4147) 2023-07-04 18:22:09 +01:00
Fabrício Vilela
df4c457dd4 fix: link pointing from javascript to devops (#4154)
* fix: link pointing from javascript to devops

* fix: return to one line json
2023-07-04 18:16:36 +01:00
Arik Chakma
8a5bc21206 Add account deletion functionality (#4153)
* chore: delete account

* Add account deletion functionality

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-07-04 18:14:56 +01:00
Kamran Ahmed
2d3a89bd56 Add related roadmaps 2023-07-03 18:04:51 +01:00
Kamran Ahmed
d39dad7275 Remove affiliates from devops roadmap 2023-07-03 17:04:12 +01:00
Ankur Jain
37107c495f fix(typo): link updated in 100-servlet.md (#4151)
[FIXED] Last link typos in the Servlet section of the Spring boot developer roadmap titled "What is Dispatcher Servlet in Spring?" 100-servlet.md
2023-07-03 10:34:24 +01:00
roadmap bot
2a910ddde4 chore: add resource under java:java-advanced-topics:streams 2023-07-02 23:38:40 +01:00
roadmap bot
11d7e7d431 chore: add resource under devops:artifcats:artifactory 2023-07-02 23:38:32 +01:00
roadmap bot
991de00891 chore: add resource under system-design:asynchronism:message-queues 2023-07-02 23:38:23 +01:00
roadmap bot
7747582e70 chore: add resource under prompt-engineering:prompt-hacking 2023-07-02 23:38:00 +01:00
roadmap bot
28550ec84c chore: add resource under python:data-structures-and-algorithms 2023-07-02 23:37:31 +01:00
roadmap bot
8246b48f59 chore: add resource under typescript:typescript 2023-07-02 23:37:04 +01:00
roadmap bot
455a70c64c chore: add resource under aspnet-core:basics-of-csharp:csharp 2023-07-02 23:36:13 +01:00
roadmap bot
f0f797a996 chore: add resource under design-system:design-language:guidelines:user-onboarding 2023-07-02 23:36:00 +01:00
roadmap bot
037763770d chore: add resource under cyber-security:networking-knowledge:ip-terminology:subnet-mask 2023-07-02 23:35:41 +01:00
roadmap bot
8d4299c899 chore: add resource under react:components:composition-vs-inheritance 2023-07-02 23:35:31 +01:00
roadmap bot
534ed126d4 chore: add resource under vue:ecosystem:mobile-apps 2023-07-02 23:35:19 +01:00
Kamran Ahmed
0fa6ecd3ce Remove youtube alert 2023-06-30 19:23:58 +01:00
Kamran Ahmed
7dfb630cb5 Update devops roadmap link 2023-06-30 19:15:33 +01:00
roadmap bot
13e1aacd3b chore: add resource under frontend:html:seo-basics 2023-06-30 19:10:24 +01:00
roadmap bot
9ad5143588 chore: add resource under java:java-advanced-topics:generics 2023-06-30 19:01:13 +01:00
roadmap bot
9e867d5f4e chore: add resource under javascript:javascript-control-flow:exception-handling:throw-statement 2023-06-30 19:00:32 +01:00
roadmap bot
f3b186d525 chore: add resource under system-design:latency-vs-throughput 2023-06-30 19:00:23 +01:00
roadmap bot
5f9a50804b chore: add resource under aspnet-core:basics-of-csharp 2023-06-30 18:57:45 +01:00
roadmap bot
486603aff7 chore: add resource under devops:live-in-terminal:process-monitoring 2023-06-30 18:57:37 +01:00
roadmap bot
feec4b7576 chore: add resource under docker:introduction:need-for-containers 2023-06-30 18:57:26 +01:00
roadmap bot
f64f7b973e chore: add resource under prompt-engineering:prompt-hacking:offensive-measures 2023-06-30 18:57:12 +01:00
roadmap bot
31f941e262 chore: add resource under prompt-engineering:prompt-hacking:defensive-measures 2023-06-30 18:57:00 +01:00
roadmap bot
09d312ee46 chore: add resource under prompt-engineering:prompt-hacking:prompt-injection 2023-06-30 18:56:53 +01:00
roadmap bot
a92e8f1b1a chore: add resource under prompt-engineering:prompt-hacking:prompt-leaking 2023-06-30 18:56:46 +01:00
roadmap bot
bca66f7c0b chore: add resource under prompt-engineering:prompt-hacking:jailbreaking 2023-06-30 18:56:38 +01:00
roadmap bot
b743a31610 chore: add resource under react:cli-tools:vite 2023-06-30 18:56:16 +01:00
roadmap bot
b1dc116cae chore: add resource under devops:cloud-providers:aws 2023-06-30 18:55:54 +01:00
roadmap bot
fae57224a8 chore: add resource under javascript:javascript-variables:hoisting 2023-06-30 18:55:35 +01:00
roadmap bot
c8ffea31d9 chore: add resource under devops:language:rust 2023-06-30 18:55:26 +01:00
roadmap bot
fc3b2a4015 chore: add resource under cyber-security:networking-knowledge:auth-methodologies:kerberos 2023-06-30 18:54:53 +01:00
roadmap bot
f70272763f chore: add resource under design-system:design-language:logo:different-file-formats 2023-06-30 11:10:13 +01:00
roadmap bot
a15c2a3ca7 chore: add resource under flutter:deployment:appstore 2023-06-30 11:10:01 +01:00
roadmap bot
550555c0c5 chore: add resource under design-system:design-language:logo:small-use-guidance 2023-06-30 11:09:40 +01:00
roadmap bot
6e201a8c29 chore: add resource under cyber-security:operating-systems:linux 2023-06-30 11:09:21 +01:00
roadmap bot
dd139170d1 chore: add resource under devops:serverless:aws-lambda 2023-06-30 11:09:03 +01:00
roadmap bot
66412327fa chore: add resource under python:data-structures-and-algorithms:arrays-linked-lists 2023-06-30 11:08:37 +01:00
roadmap bot
7736271ba0 chore: add resource under flutter:dart-basics:control-flow-statements 2023-06-30 11:07:45 +01:00
roadmap bot
4236c8495a chore: add resource under cyber-security:extras:certifications:beginner-certifications:comptia-linuxplus 2023-06-30 11:06:33 +01:00
roadmap bot
6c930716fc chore: add resource under ux-design:human-decision-making:ux-buzzwords:nudge-theory 2023-06-30 11:06:21 +01:00
roadmap bot
522b00612a chore: add resource under cyber-security:security-skills-and-knowledge:other-attacks:buffer-overflow 2023-06-30 11:02:56 +01:00
roadmap bot
e36ff7bdd6 chore: add resource under frontend:build-tools:module-bundlers:vite 2023-06-30 11:02:38 +01:00
roadmap bot
d168731cbd chore: add resource under python:python-advanced-topics:iterators 2023-06-30 11:02:15 +01:00
roadmap bot
715daf499f chore: add resource under cyber-security:basic-it-skills:connection-types:wifi 2023-06-30 11:01:59 +01:00
roadmap bot
6f5449e4b9 chore: add resource under cyber-security:basic-it-skills:connection-types:nfc 2023-06-30 11:01:42 +01:00
roadmap bot
7f3690d5b8 chore: add resource under cyber-security:basic-it-skills:connection-types 2023-06-30 11:01:24 +01:00
roadmap bot
1046dc9171 chore: add resource under cyber-security:basic-it-skills:computer-hardware-components 2023-06-30 11:01:11 +01:00
Kamran Ahmed
28f672d989 Update distance of mark favorite 2023-06-27 20:46:36 +01:00
Kamran Ahmed
3f5ddfa346 Add react native content 2023-06-27 20:20:17 +01:00
Kamran Ahmed
f1f4e99dab Add directories for react native roadmap 2023-06-27 20:20:17 +01:00
Kamran Ahmed
67f3917a8d Add react native roadmap 2023-06-27 20:20:17 +01:00
Tabish Naqvi
02988fac2c Issue #4110 Broken Link Fix (#4129) 2023-06-27 19:21:01 +01:00
Ritik Ranjan
d21deb0725 Database spelling mistake (#4115) 2023-06-24 16:49:12 +06:00
Anthony Da Mota
2a5d316e58 Fixed typo in 102-documentation.md (#4108) 2023-06-23 19:11:26 +06:00
Kamran Ahmed
557a01b4d0 Fix typo in docker file 2023-06-22 20:44:37 +01:00
Kamran Ahmed
680dbee6eb Clear favorite on logout 2023-06-22 20:44:37 +01:00
roadmap bot
b525c5efb4 chore: add resource under react:components:functional-components 2023-06-22 20:41:10 +01:00
roadmap bot
347141f93b chore: add resource under cyber-security:operating-systems:windows 2023-06-22 20:40:50 +01:00
Snahal Kumar
9a6e8b1635 C++ Lambdas link (#4084)
The video link is no longer available on youtube. It is updated with another link which I have personally reviewed and has good-quality content of 18 minutes in English has high viewers and is one of the most popular C++ channels on youtube. Also, a free e-book of lambda is provided by the content creator.
2023-06-22 20:38:00 +01:00
Shawn Nectar
8a42d0346b [Issue] #4062 Wrong link assigned (#4077) 2023-06-22 20:37:17 +01:00
Arnav K
0e0a3f17ae Update 101-c.md (#4106) 2023-06-22 20:36:52 +01:00
Shawn Nectar
9298f76a68 [Issue] Software Architect - Duplicated python in related roadmaps (#4078) 2023-06-22 20:14:53 +01:00
Renato C. Francisco
e85ff79dbe remove duplicated top explanation (#4104) 2023-06-22 20:14:35 +01:00
Arnav K
7a19b7887a Fix router link (#4105) 2023-06-22 20:14:05 +01:00
roadmap bot
08e7efa637 chore: add resource under frontend:html:writing-semantic-html 2023-06-22 16:14:51 +01:00
roadmap bot
cc348c0c96 chore: add resource under flutter:state-management:riverpod 2023-06-22 16:14:24 +01:00
roadmap bot
5a059c151f chore: add resource under cyber-security:extras:ctfs:sans-holiday-hack-challenge 2023-06-22 16:14:10 +01:00
roadmap bot
4063b71345 chore: add resource under backend:more-about-databases:orms 2023-06-22 16:13:58 +01:00
roadmap bot
129ef9ccd8 chore: add resource under backend:internet 2023-06-22 16:13:42 +01:00
roadmap bot
d60e4fcfa4 chore: add resource under full-stack:git 2023-06-22 16:13:26 +01:00
roadmap bot
310c6d4c55 chore: add resource under cpp:basic-operations:bitwise 2023-06-22 16:13:11 +01:00
roadmap bot
fffccbe5b5 chore: add resource under cpp:introduction:what-is-cpp 2023-06-22 16:12:50 +01:00
roadmap bot
9685f1e952 chore: add resource under prompt-engineering:image-prompting:style-modifiers 2023-06-22 16:12:16 +01:00
roadmap bot
ef53c2dd5f chore: add resource under frontend:desktop-applications:electron 2023-06-22 16:11:57 +01:00
roadmap bot
7e0f7a32af chore: add resource under software-design-architecture:clean-code-principles:code-by-actor 2023-06-22 16:11:46 +01:00
roadmap bot
cdea68e754 chore: add resource under devops:operating-systems:linux:rhel 2023-06-22 16:11:20 +01:00
roadmap bot
90069e4ef4 chore: add resource under devops:operating-systems:linux:ubuntu 2023-06-22 16:10:50 +01:00
roadmap bot
8dbaa60b58 chore: add resource under golang:go-basics 2023-06-22 16:08:20 +01:00
roadmap bot
19b38dec4c chore: add resource under full-stack:nodejs 2023-06-22 15:58:53 +01:00
Arik Chakma
9c246984d1 Mark favorite in the Roadmap's page (#4098)
* chore: favorite in roadmap header

* chore: best practices header

* chore: mark favorite

* fix: bookmark position

* UI changes and fix

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-06-22 02:57:32 +01:00
Aaryan Dewan
ff0e10c16c Correct grammar (#4095)
Changed 'al' to 'all'
2023-06-21 20:40:56 +06:00
roadmap bot
ec165d4a78 chore: add resource under devops:networking-protocols 2023-06-20 22:03:44 +01:00
Arik Chakma
afe718ee09 Allow marking roadmaps and best practices as favorites (#4087)
* chore: favorite icon

* fix: hero progress mark favorit

* chore: mark favorite

* fix: mouse overflow

* fix: popup redirect

* Update favorites on homepage

* Refactor favorite logic

* Change icon location

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-06-20 21:50:18 +01:00
Ritik Ranjan
4aca01a98d Fix spelling mistake (#4088) 2023-06-20 18:24:48 +01:00
Kamran Ahmed
140282f1ff Update devops roadmap link 2023-06-20 17:31:31 +01:00
roadmap bot
4d38d19e4f chore: add resource under aspnet-core:basics-of-aspnet-core:filters-and-attributes 2023-06-20 15:16:05 +01:00
roadmap bot
5e39417a64 chore: add resource under cyber-security:security-skills-and-knowledge:common-exploit-frameworks 2023-06-20 15:15:57 +01:00
roadmap bot
03ec7ebcd9 chore: add resource under javascript:javascript-variables:scopes 2023-06-20 15:15:44 +01:00
roadmap bot
fbb6def555 chore: add resource under computer-science:pick-a-language:c-plus-plus 2023-06-20 15:15:24 +01:00
roadmap bot
ae9e30eb73 chore: add resource under mongodb:mongodb-basics:sql-vs-nosql 2023-06-20 15:15:03 +01:00
roadmap bot
9e89c6946b chore: add resource under ux-design:human-decision-making 2023-06-20 15:14:48 +01:00
Arik Chakma
6ff83d0797 Merge pull request #3766 from jensrott/fix-typo-playwright
Fixed typo in the word tutorial
2023-06-20 00:53:01 +06:00
Arik Chakma
5ff131ae29 Merge pull request #3873 from the-land-mine/master
fix: Correct syntax error in Promise initialization example by adding space
2023-06-20 00:51:52 +06:00
Arik Chakma
e80f88ef2c Merge pull request #4049 from arzkar/issue4044_fix
fix: typo: mor -> more
2023-06-20 00:49:50 +06:00
Arik Chakma
cff01c151b Merge pull request #4080 from JustLolo/master
The external link is broken
2023-06-20 00:48:48 +06:00
Arik Chakma
6ca85a41a2 Merge pull request #4081 from johan456789/master
fix URL link
2023-06-20 00:46:32 +06:00
JustLolo
1630b493b1 External link is broken, fixed 2023-06-19 06:41:26 -05:00
Tsung-Han Yu
518ece3cab fix URL link 2023-06-19 10:34:37 +08:00
JustLolo
aba2fd1d35 External broken link, Youtube is showing:
`This video isn't available anymore`
2023-06-18 18:11:38 -05:00
Arik Chakma
fcd68568c2 Merge pull request #4076 from ShawnNectar/patch-1
[Issue] #4075 Wrong link assigned
2023-06-18 22:11:26 +06:00
Shawn Nectar
1b5e9ffe0d [Issue] #4075 Wrong link assigned 2023-06-18 12:58:33 -03:00
Kamran Ahmed
b3c3e44ba2 Update shortcut for marking as skipped 2023-06-17 23:13:59 +01:00
Kamran Ahmed
67b49d3f87 Remove new badges from old roadmaps 2023-06-17 16:17:42 +01:00
roadmap bot
0d3e1d31bb chore: add resource under aspnet-core:orm:entity-framework-core:change-tracker-api 2023-06-17 15:23:52 +01:00
roadmap bot
28a27a1c65 chore: add resource under computer-science:pick-a-language:c 2023-06-17 15:23:36 +01:00
roadmap bot
8c3ea21ef1 chore: add resource under cpp:introduction 2023-06-17 15:22:41 +01:00
roadmap bot
417596db36 chore: add resource under frontend:progressive-web-apps:notifications 2023-06-17 15:22:30 +01:00
roadmap bot
28240162b3 chore: add resource under frontend:build-tools:module-bundlers:esbuild 2023-06-17 15:22:11 +01:00
roadmap bot
6dca357782 chore: add resource under blockchain:blockchain-general-knowledge:blockchain-forking 2023-06-17 15:21:57 +01:00
roadmap bot
d1fe06a4e9 chore: add resource under flutter:widgets:responsive-widgets 2023-06-17 15:20:28 +01:00
roadmap bot
97cba5681b chore: add resource under full-stack:html 2023-06-17 15:20:15 +01:00
roadmap bot
715d2ba62b chore: add resource under golang:go-advanced:working-with-json 2023-06-17 15:19:54 +01:00
Kamran Ahmed
32673c21fb Add shortcuts for progress tracking 2023-06-17 15:19:24 +01:00
roadmap bot
f0c47705cb chore: add resource under nodejs:nodejs-command-line-apps:command-line-args 2023-06-17 15:17:18 +01:00
roadmap bot
612b91e05f chore: add resource under full-stack:nodejs 2023-06-17 15:17:08 +01:00
roadmap bot
b4cce42844 chore: add resource under devops:serverless:azure-functions 2023-06-17 15:16:41 +01:00
roadmap bot
2c2d57ecab chore: add resource under cpp:functions 2023-06-17 15:16:36 +01:00
roadmap bot
d05374ca68 chore: add resource under ux-design:human-decision-making:ux-buzzwords:nudge-theory 2023-06-17 15:16:14 +01:00
roadmap bot
b5c02a9aff chore: add resource under cyber-security:basic-it-skills:popular-suites:icloud 2023-06-17 15:16:04 +01:00
roadmap bot
1e3568a1c4 chore: add resource under cyber-security:networking-knowledge:understand-the-terminology:dns 2023-06-17 15:15:44 +01:00
Arik Chakma
bdeebbc9cc chore: linkedin login functionality (#4072) 2023-06-17 12:31:33 +01:00
Kamran Ahmed
510e6fd273 Update youtube banner 2023-06-17 11:49:15 +01:00
Kamran Ahmed
2ca98bbb10 Show resource progress on best practices 2023-06-17 11:47:25 +01:00
Kamran Ahmed
49cff0c22c Add progress loading on roadmap pages 2023-06-17 05:43:50 +01:00
Kamran Ahmed
943bf41dc5 Fix duplicate nodes in frontend roadmap 2023-06-17 04:30:58 +01:00
Umair Khan
6c9ba75906 Fix KodeKloud spelling (#4066)
* Update devops.json 

kodekloud spelling correction

* Update src/data/roadmaps/devops/devops.json

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-06-15 22:17:53 +01:00
Kamran Ahmed
70976ee42a Add roadcard as protected route 2023-06-15 14:51:52 +01:00
roadmap bot
5848698abf chore: add resource under python:python-advanced-topics:lambdas 2023-06-15 02:27:28 +01:00
roadmap bot
29dd1eb21f chore: add resource under python:python-advanced-topics:decorators 2023-06-15 02:27:17 +01:00
roadmap bot
ebe6d3c6e4 chore: add resource under system-design:latency-vs-throughput 2023-06-15 02:27:06 +01:00
roadmap bot
425bfea265 chore: add resource under system-design:performance-vs-scalability 2023-06-15 02:26:57 +01:00
roadmap bot
c58efe8d00 chore: add resource under python:python-advanced-topics:oop:classes 2023-06-15 02:26:39 +01:00
Kamran Ahmed
955d04e532 UI changes on road cards 2023-06-14 20:58:15 +01:00
Kamran Ahmed
0031a9c6ba Remove preact-compat 2023-06-14 20:42:32 +01:00
Kamran Ahmed
8fb778337d Add support for roadcards 2023-06-14 20:42:07 +01:00
Kamran Ahmed
a48d39a863 Update animation of progress switcher 2023-06-14 15:02:53 +01:00
Kamran Ahmed
36b2a8f2d7 Progress container update 2023-06-14 14:46:10 +01:00
Kamran Ahmed
00e9d44ba9 Remove client:only from favorite roadmaps 2023-06-14 13:54:54 +01:00
Kamran Ahmed
62b068a94a Fix jitter on homepage 2023-06-14 13:51:29 +01:00
Kamran Ahmed
af926002e9 feat: show user's progress on homepage (#4058)
* Add custom client:authenticated directive

* Update 100-installing-a-local-cluster.md

fixed typo for ubuntu in 100-installing-a-local-cluster.md

* Animate progress on the homescreen

* Show progress on homepage

* Update progress list UI

* Remove sponsor call from non-required pages

* Resolve merge conflicts

* Change height of hero container

---------

Co-authored-by: kanhaya kumar yadav <kanhaya.workspace@gmail.com>
2023-06-14 13:12:52 +01:00
roadmap bot
0612f9c44f chore: add resource under docker:introduction:what-are-containers 2023-06-14 03:47:19 +01:00
roadmap bot
fbf545c2ed chore: add resource under cyber-security:security-skills-and-knowledge:common-distros-for-hacking:parrot-os 2023-06-14 03:47:04 +01:00
roadmap bot
c7ef97cb4f chore: add resource under react:rendering:refs 2023-06-14 03:46:43 +01:00
roadmap bot
564f48540e chore: add resource under react:rendering:render-props 2023-06-14 03:46:29 +01:00
roadmap bot
52e729d212 chore: add resource under prompt-engineering:prompting-introduction 2023-06-14 03:45:32 +01:00
roadmap bot
bdfa7606dd chore: add resource under devops:live-in-terminal:scripting:powershell 2023-06-14 03:45:21 +01:00
roadmap bot
056e0e8e3a chore: add resource under react:rendering:lists-and-keys 2023-06-14 03:45:11 +01:00
roadmap bot
879ba258b2 chore: add resource under cyber-security:basic-it-skills:connection-types:wifi 2023-06-14 03:44:40 +01:00
Kamran Ahmed
3d62d2689f Animate progress on the homescreen 2023-06-14 02:09:09 +01:00
Arbaaz Laskar
3b7a9ca5cd fix: typo: mor -> more 2023-06-14 00:06:37 +05:30
Arik Chakma
ac892d2868 Merge pull request #4047 from kanhayaKy/patch-1
fix: ubuntu type
2023-06-13 17:57:19 +06:00
roadmap bot
19bde7bb2f chore: add resource under cyber-security:security-skills-and-knowledge:forensics 2023-06-13 11:38:12 +01:00
roadmap bot
419b1872b8 chore: add resource under javascript:javascript-asynchronous-javascript:callbacks 2023-06-13 11:37:50 +01:00
roadmap bot
bbeb4ee279 chore: add resource under devops:live-in-terminal:scripting:bash-scripting 2023-06-13 11:37:42 +01:00
roadmap bot
f2ca7d9140 chore: add resource under backend:relational-databases:mysql 2023-06-13 11:37:12 +01:00
roadmap bot
70b95c6ad1 chore: add resource under javascript:javascript-asynchronous-javascript:callbacks:callback-hell 2023-06-13 11:36:49 +01:00
roadmap bot
5a3f621093 chore: add resource under javascript:javascript-loops-iterations:break-continue:labeled-statements 2023-06-13 11:36:41 +01:00
roadmap bot
631eb380fc chore: add resource under cpp:pointers-and-references:smart-pointers:weak-ptr 2023-06-13 11:36:31 +01:00
roadmap bot
cb9778ba15 chore: add resource under cyber-security:basic-it-skills:os-independent-troubleshooting 2023-06-13 11:36:20 +01:00
roadmap bot
38106a8199 chore: add resource under typescript:typescript-types:type-assertions:as-type 2023-06-13 11:35:46 +01:00
roadmap bot
226e94857b chore: add resource under aspnet-core:basics-of-csharp:csharp 2023-06-13 11:35:31 +01:00
roadmap bot
f94c701657 chore: add resource under computer-science:pick-a-language:c-plus-plus 2023-06-13 11:35:17 +01:00
roadmap bot
259109cc38 chore: add resource under cyber-security:basic-it-skills 2023-06-13 11:35:04 +01:00
kanhaya kumar yadav
e120df30e3 Update 100-installing-a-local-cluster.md
fixed typo for ubuntu in 100-installing-a-local-cluster.md
2023-06-13 11:46:55 +05:30
Kamran Ahmed
43f351a943 Add progress loading on homepage roadmaps 2023-06-13 03:19:59 +01:00
roadmap bot
502b8e20d5 chore: add resource under computer-science:common-algorithms:graph-algorithms:breadth-first-search 2023-06-11 18:44:23 +01:00
roadmap bot
ff5858f965 chore: add resource under flutter:widgets:inherited-widgets 2023-06-11 18:43:59 +01:00
roadmap bot
8b8ef52d98 chore: add resource under python:python-basics 2023-06-11 18:43:37 +01:00
roadmap bot
7032bc0726 chore: add resource under backend:repo-hosting-services:github 2023-06-11 18:43:29 +01:00
roadmap bot
ba65dec596 chore: add resource under cpp:libraries:poco 2023-06-11 18:42:48 +01:00
roadmap bot
78cf88fbd9 chore: add resource under flutter:design-principles:design-patterns 2023-06-11 02:10:16 +01:00
roadmap bot
93e16d899a chore: add resource under devops:artifcats:nexus 2023-06-11 02:09:49 +01:00
roadmap bot
14060bda94 chore: add resource under javascript:javascript-control-flow:exception-handling:throw-statement 2023-06-11 02:08:21 +01:00
Kamran Ahmed
45b729d708 Update the schema updated date 2023-06-10 20:28:13 +01:00
roadmap bot
9023ea6298 chore: add resource under angular:typescript-basics:union-types 2023-06-10 14:06:00 +01:00
Kamran Ahmed
d29176cf98 Add links to beginner versions 2023-06-10 11:40:24 +01:00
Kamran Ahmed
55989d8480 Add updated devops roadmap pdf 2023-06-10 04:03:38 +01:00
Kamran Ahmed
9c936974c7 Add devops beginner roadmap 2023-06-10 04:02:51 +01:00
Kamran Ahmed
311b4683d0 Rewrite devops roadmap 2023-06-10 04:02:48 +01:00
roadmap bot
bf61697154 chore: add resource under react:hooks:common-hooks 2023-06-09 21:01:31 +01:00
roadmap bot
52818f1e34 chore: add resource under blockchain:blockchain-basics 2023-06-09 21:01:17 +01:00
roadmap bot
174ea05a92 chore: add resource under devops:infrastructure-as-code:kubernetes 2023-06-09 20:59:40 +01:00
roadmap bot
dcb4e06fea chore: add resource under cyber-security:security-skills-and-knowledge:blue-team-read-team-purple-team 2023-06-09 01:53:31 +01:00
roadmap bot
62eb6a4a01 chore: add resource under postgresql-dba:introduction:what-are-relational-databases 2023-06-09 01:53:04 +01:00
roadmap bot
f643f3bd9a chore: add resource under kubernetes:running-applications:deployments 2023-06-09 01:52:10 +01:00
roadmap bot
972370e0e6 chore: add resource under angular:typescript-basics:type-guard 2023-06-09 01:52:01 +01:00
roadmap bot
a6feb72339 chore: add resource under cyber-security:basic-it-skills:connection-types:nfc 2023-06-09 01:51:47 +01:00
roadmap bot
c751706631 chore: add resource under cpp:functions:lambda 2023-06-09 01:51:32 +01:00
roadmap bot
8900324234 chore: add resource under frontend:css:responsive-design-and-media-queries 2023-06-09 01:51:04 +01:00
roadmap bot
f1b880d898 chore: add resource under java:java-advanced-topics:memory-management 2023-06-09 01:50:50 +01:00
roadmap bot
9a285d7470 chore: add resource under cpp:setting-up:code-editors 2023-06-09 01:50:36 +01:00
roadmap bot
15259560e0 chore: add resource under javascript:javascript-control-flow:exception-handling 2023-06-09 01:50:19 +01:00
roadmap bot
d8afa166aa chore: add resource under python:python-basics:variables-and-datatypes 2023-06-08 14:34:57 +01:00
roadmap bot
d39791257e chore: add resource under cpp:introduction:what-is-cpp 2023-06-07 14:48:42 +01:00
Kamran Ahmed
06b7005782 chore: add resource under cyber-security:security-skills-and-knowledge:attack-types:phishing-vishing-whaling-smishing 2023-06-07 11:24:23 +01:00
Kamran Ahmed
bc6c933440 chore: add resource under cyber-security:security-skills-and-knowledge:cryptography 2023-06-07 11:24:05 +01:00
Kamran Ahmed
b965a89db3 chore: add resource under java:java-advanced-topics:garbage-collection 2023-06-07 11:23:32 +01:00
Kamran Ahmed
9b82e327e2 chore: add resource under backend:learn-a-language:java 2023-06-07 11:23:01 +01:00
Kamran Ahmed
5808125d92 chore: add resource under computer-science:pick-a-language:c-plus-plus 2023-06-07 11:22:38 +01:00
Kamran Ahmed
f49fe258aa chore: add resource under cyber-security:basic-it-skills:connection-types:nfc 2023-06-07 11:22:05 +01:00
Kamran Ahmed
08df9e8c33 chore: add resource under cyber-security:extras:certifications:beginner-certifications:comptia-aplus 2023-06-07 11:21:46 +01:00
Kamran Ahmed
56e388edd8 chore: add resource under backend:apis:authentication:openid 2023-06-07 11:21:08 +01:00
Kamran Ahmed
ded75c7af1 chore: add resource under golang:go-basics:structs 2023-06-07 11:20:44 +01:00
Kamran Ahmed
557c426078 Update apollo workshop image 2023-06-07 11:19:42 +01:00
Kamran Ahmed
d61a83a0a3 chore: add resource under flutter:design-principles:solid-principles 2023-06-06 14:19:46 +01:00
Kamran Ahmed
7500c6c1cb chore: add resource under backend:internet:what-is-http 2023-06-06 14:19:16 +01:00
Kamran Ahmed
b51076dd0a chore: add resource under cpp:introduction 2023-06-06 14:18:56 +01:00
Kamran Ahmed
8010bfc832 Add kodecloud link 2023-06-06 14:17:21 +01:00
Kamran Ahmed
0f80f26d17 Update link-groups 2023-06-06 11:02:08 +01:00
thesmallrock
40d25c43f4 Fixing "new and delete operators" titles. (#3994) 2023-06-06 09:32:02 +01:00
Kamran Ahmed
686a7382ab chore: add resource under cyber-security:basic-it-skills:basics-of-computer-networking 2023-06-06 09:11:42 +01:00
Kamran Ahmed
88401bd7b1 chore: add resource under mongodb:datatypes:date 2023-06-06 09:11:12 +01:00
Kamran Ahmed
1d97467c05 chore: add resource under software-design-architecture:architectural-styles 2023-06-06 09:10:43 +01:00
Kamran Ahmed
2388fa148b Update apollo workshop 2023-06-05 23:40:10 +01:00
Kamran Ahmed
d574fccbc8 Add apollo asset 2023-06-05 23:21:04 +01:00
Kamran Ahmed
89cc55a1eb chore: add resource under flutter:state-management:change-notifier 2023-06-05 21:18:29 +01:00
Kamran Ahmed
8c75354235 chore: add resource under flutter:state-management:value-notifier 2023-06-05 21:18:22 +01:00
Kamran Ahmed
9eb9dc8cd8 chore: add resource under nodejs:nodejs-command-line-apps:taking-input 2023-06-05 21:18:07 +01:00
Kamran Ahmed
afa28bddd3 chore: add resource under python:python-advanced-topics:lambdas 2023-06-05 21:17:32 +01:00
Kamran Ahmed
5cf0e76765 chore: add resource under react:components:props-vs-state 2023-06-05 21:16:59 +01:00
Kamran Ahmed
16b3f8ff49 chore: add resource under system-design:application-layer:microservices 2023-06-05 21:16:12 +01:00
Kamran Ahmed
d2055e0f6d chore: add resource under react:components:conditional-rendering 2023-06-05 21:15:43 +01:00
Kamran Ahmed
4010157baf chore: add resource under ux-design:human-decision-making:frameworks:bj-frogg-behavior-model 2023-06-05 21:15:08 +01:00
Kamran Ahmed
75c7e83264 chore: add resource under backend:os-general-knowledge:terminal-usage 2023-06-05 21:14:28 +01:00
Kamran Ahmed
8ca22e0dcc chore: add resource under python:python-testing:pytest 2023-06-05 21:13:27 +01:00
Kamran Ahmed
2b8d1f470c chore: add resource under backend:version-control-systems:git 2023-06-05 21:13:15 +01:00
Kamran Ahmed
c4d9651e95 chore: add resource under react:components 2023-06-05 21:12:13 +01:00
Kamran Ahmed
813c0ebd93 chore: add resource under backend:relational-databases:mysql 2023-06-05 21:11:38 +01:00
Kamran Ahmed
e376942c8d chore: add resource under devops:infrastructure-as-code:gitops:argo-cd 2023-06-05 21:02:21 +01:00
Kamran Ahmed
6d91c11856 chore: add resource link to ux-design >> human-decision-making:frameworks:stephen-wendell-create-action-funnel 2023-06-05 21:00:49 +01:00
Kamran Ahmed
1d47b1fb7b chore: add resource link to cpp >> introduction:what-is-cpp 2023-06-05 20:47:54 +01:00
Kamran Ahmed
54a9e586bf chore: add resource link to frontend >> progressive-web-apps:lighthouse 2023-06-05 20:46:58 +01:00
Kamran Ahmed
b58c2a1356 Fix roadmap json 2023-06-05 20:38:54 +01:00
Kamran Ahmed
dec5e58063 Refactor roadmap and best practice rendering engine 2023-06-05 19:55:58 +01:00
Kamran Ahmed
b0a4130229 Update code review pyramid 2023-06-04 23:00:35 +01:00
Kamran Ahmed
a06e992b8a Update reference link for code review pyramid 2023-06-03 21:31:37 +01:00
Kamran Ahmed
6e1072bea9 Add code review pyramid 2023-06-03 21:17:55 +01:00
Kamran Ahmed
1f9eb18bfb Add update file URL in the topic file 2023-06-02 22:45:37 +01:00
Kamran Ahmed
603bd2b107 Update contribution copy 2023-06-02 21:34:30 +01:00
Kamran Ahmed
0163d9e4f9 Update copy on contribution 2023-06-02 21:33:30 +01:00
Kamran Ahmed
910579f463 Update isNew badges 2023-06-02 21:31:27 +01:00
Kamran Ahmed
d6a28a312a Add contribution functionality 2023-06-02 21:23:26 +01:00
Kamran Ahmed
267a4a7be5 Update cpp roadmap dates 2023-06-01 17:01:39 +01:00
Kamran Ahmed
59111a1a90 Add link to C++ roadmap 2023-06-01 03:59:22 +01:00
Kamran Ahmed
9f5d1aef74 Add content to C++ roadmap 2023-06-01 03:42:42 +01:00
Kamran Ahmed
36eed57ec2 Add content to C++ roadmap 2023-06-01 03:33:27 +01:00
Kamran Ahmed
cc054bb24b Add content to C++ roadmap 2023-06-01 03:18:40 +01:00
Kamran Ahmed
056256015d Add C++ roadmap 2023-06-01 02:55:26 +01:00
Arik Chakma
dd5f3795ec fix: login link (#3985) 2023-05-31 10:00:19 +01:00
Kamran Ahmed
8c29d43bef fix: page loading message does not persist 2023-05-30 19:48:40 +01:00
Kamran Ahmed
aa32258aa1 Refactor page progress implementation 2023-05-30 18:52:41 +01:00
Kamran Ahmed
d2394aca77 Downgrade nanostores 2023-05-30 18:40:58 +01:00
Kamran Ahmed
6804535fe4 chore: update dependencies 2023-05-30 18:27:08 +01:00
github-actions[bot]
3852e7d96f chore: update dependencies to latest (#3973)
Co-authored-by: kamranahmedse <kamranahmedse@users.noreply.github.com>
2023-05-30 17:41:57 +01:00
Kamran Ahmed
eb852caee8 Update link to improve guide 2023-05-30 14:50:37 +01:00
유성현
1414693e33 fix minor typos (#3974)
* 📝 fix : typos

* Update 101-anti-corruption-layer.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2023-05-30 14:32:15 +01:00
Kamran Ahmed
fbdb7e77c3 Fix: active sidebar missing border 2023-05-27 03:04:35 +01:00
Kamran Ahmed
c72658938f Add icons in the mobile sidebar menu 2023-05-26 17:31:10 +01:00
Kamran Ahmed
718c582a8c Update account sidebar 2023-05-26 17:11:59 +01:00
Kamran Ahmed
12f385dffd Show the recently updated item on top 2023-05-26 15:38:04 +01:00
Kamran Ahmed
35f500d218 Show most recently tracked items on top 2023-05-26 03:43:50 +01:00
Kamran Ahmed
44949709d1 Add activity page 2023-05-26 03:16:25 +01:00
Kamran Ahmed
476557db80 Add activity dashboard 2023-05-25 16:37:33 +01:00
Kamran Ahmed
f7625a8250 Add basic UI for activity dashboard 2023-05-24 19:25:35 +01:00
Kamran Ahmed
c06c236da5 Refactor account pages 2023-05-24 15:18:29 +01:00
Kamran Ahmed
24c262282e External redirect tracking from roadmap.sh 2023-05-22 19:59:38 +01:00
Kamran Ahmed
876330522d Add devops by nana link 2023-05-22 19:59:38 +01:00
Sean Kelly
f1c771e95c Fix typo in content (#3959) 2023-05-22 18:08:55 +01:00
Kamran Ahmed
d3668b25e9 Add kbd around cmd+k 2023-05-22 11:06:26 +01:00
Kamran Ahmed
b0493c370c Add prompt engineering roadmap 2023-05-21 13:00:45 +01:00
Arik Chakma
e67caa0ffe chore: firefox input outline (#3951) 2023-05-21 12:56:34 +01:00
Arik Chakma
82a44ddfef fix: user gets logged out on browser quit (#3947) 2023-05-21 12:55:02 +01:00
Arik Chakma
205fe6cc23 fix: firefox bug (#3948) 2023-05-21 12:27:38 +01:00
Kamran Ahmed
591cac8bfa Add content for reliability 2023-05-21 03:39:19 +01:00
Kamran Ahmed
42debdeab0 Add content for real world under prompting techniques 2023-05-21 03:22:20 +01:00
Kamran Ahmed
0555452bf2 Load pages on render 2023-05-21 02:17:31 +01:00
Kamran Ahmed
cc7f9d94bb Clear text on command menu close 2023-05-20 23:47:54 +01:00
Kamran Ahmed
51d986b86f Add support for CMD + K search (#3944)
* Add command k input

* On Enter open the page

* chore: backend fix

* Refactor pages and add retrieval

* Group separation, no result handling and filtering

* Fix responsiveness of command menu

* Activate on CMD+K and focus

* Add icons to menu

* Add page filtering

* Add search icon in navigation

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2023-05-20 23:20:11 +01:00
Kamran Ahmed
83057d65cd Update content for prompt engineering 2023-05-20 12:15:37 +01:00
Kamran Ahmed
b886f20570 Add pdf for prompt engineering 2023-05-20 05:13:38 +01:00
Kamran Ahmed
dacd2d898b Add prompt enginering roadmap 2023-05-20 05:12:33 +01:00
Kamran Ahmed
a2490efa80 Add content dirs for prompt engineering 2023-05-20 02:37:57 +01:00
Kamran Ahmed
e087b79ade Add prompt engineering roadmap 2023-05-20 02:10:20 +01:00
Kamran Ahmed
10b1a8cb07 Add guide about resources for llms 2023-05-19 16:06:59 +01:00
Kamran Ahmed
f2c06462fa Add assets for ambassador and GraphQL 2023-05-19 01:05:36 +01:00
Kamran Ahmed
ad7ba44a2e Add pages JSON 2023-05-18 20:03:46 +01:00
Kamran Ahmed
7a72c96e79 Remove categroy field injection 2023-05-18 19:36:39 +01:00
Kamran Ahmed
d955044a3b Add category levels to pages 2023-05-18 18:03:08 +01:00
Kamran Ahmed
b86fafd538 Update roadmap note 2023-05-18 16:23:12 +01:00
Abilio Castro
c52a4e6638 Adding link to Spring Boot roadmap from Java roadmap (#3935)
* Adding link to Spring Boot roadmap from Java roadmap

* Adding link to Spring Boot roadmap from Java roadmap

---------

Co-authored-by: Abilio Silva <asilva@descartes.com>
2023-05-18 15:47:11 +01:00
Kamran Ahmed
9d66da6bf9 Add store link in footer 2023-05-18 12:57:20 +01:00
Kamran Ahmed
4b76d0b7aa Rearrange visual 2023-05-16 16:35:18 +01:00
Kamran Ahmed
626026eebc Add guide about LLMs 2023-05-16 16:35:18 +01:00
Kamran Ahmed
fdd12acb8e Add link to full stack roadmap 2023-05-15 19:51:14 +01:00
Kamran Ahmed
02015826ff Update related roadmaps 2023-05-15 14:51:45 +01:00
Kamran Ahmed
5d07ce32d8 Change color for skipped 2023-05-14 14:57:51 +01:00
Mohammad Ostadi
3967b16d25 Fix wrong backend and devops links (#3919) 2023-05-14 13:09:38 +01:00
Kamran Ahmed
f325183691 Add keydowns in updating progerss 2023-05-14 03:31:00 +01:00
Kamran Ahmed
a029850531 Change color of skipped 2023-05-14 03:12:28 +01:00
Kamran Ahmed
d3d2ae5889 Refactor update topic progress functionality 2023-05-14 03:05:54 +01:00
Kamran Ahmed
4a049b2a7a Skip colors 2023-05-14 02:53:07 +01:00
Kamran Ahmed
fd349f2da8 Allow skipping 2023-05-14 02:41:04 +01:00
Kamran Ahmed
f338bd5ecb Refactor progress button 2023-05-13 12:44:14 +01:00
Kamran Ahmed
a3470cd844 Fix flickering issue on the profile pages 2023-05-12 22:38:14 +01:00
Kamran Ahmed
f4635d794f Refactor buttons 2023-05-12 17:26:37 +01:00
Kamran Ahmed
426fe44dc8 Add content for full stack roadmap 2023-05-12 14:14:45 +01:00
Kamran Ahmed
4ed39cec1a Update monitoring 2023-05-12 13:07:46 +01:00
Kamran Ahmed
b1f0844546 Add github action sample 2023-05-12 12:57:35 +01:00
Kamran Ahmed
88aa7e4024 Add fullstack roadmap 2023-05-12 12:51:34 +01:00
Kamran Ahmed
471f6348f1 Add isNew flag to fullstack roadmap 2023-05-12 12:51:34 +01:00
Kamran Ahmed
9dfb70c941 Add fullstack roadmap 2023-05-12 12:51:34 +01:00
Zai Santillan
6fa7e0d1c0 Update twitter username (#3907) 2023-05-11 03:41:20 +01:00
Kamran Ahmed
5ccfa654ec Add support for custom labels in ga 2023-05-10 01:18:23 +01:00
Kamran Ahmed
1c67068eab Update twitter username 2023-05-09 15:39:50 +01:00
Kamran Ahmed
f5ff2a0823 Add contribution url to topic detail popup 2023-05-09 15:28:16 +01:00
Aman Tank
58503f67f3 Fix #3882, resolves #3874 (#3882)
* F[ixed] Link in Content Delivery Networks #3881

* [Fixed] Typo #3881

* Delete package-lock.json

---------

Co-authored-by: Aman Tank <132202130+amanntank@users.noreply.github.com>
2023-05-09 15:24:21 +01:00
Kamran Ahmed
5dd0479caf Add feature image 2023-05-09 11:47:07 +01:00
Kamran Ahmed
7441f1a203 Refactor avatar implementation 2023-05-09 03:36:29 +01:00
Arik Chakma
4d3ebb0ac6 chore: placeholder image 2023-05-09 03:36:29 +01:00
Arik Chakma
47d5716238 feat: upload profile picture 2023-05-09 03:36:29 +01:00
Kamran Ahmed
94d888a61e Add avatar url config 2023-05-09 03:35:45 +01:00
bany
ddd43a1514 Add missing file android.pdf (#3899) 2023-05-09 02:22:52 +01:00
Kamran Ahmed
2cf94f981b Resource progress functionality 2023-05-09 02:14:27 +01:00
Kamran Ahmed
f1973f63c2 Rename "Mark as Done" and "Mark as Pending" 2023-05-09 01:53:18 +01:00
Arik Chakma
dfb67e17d5 chore: in progress design 2023-05-09 06:21:39 +06:00
Arik Chakma
48239772f6 fix: removing classes 2023-05-09 06:04:47 +06:00
Arik Chakma
1cea9d0e13 chore: added pending state for topics 2023-05-09 06:02:41 +06:00
Kamran Ahmed
6591c36ef4 Add visit tracker to roadmap 2023-05-08 23:06:09 +01:00
Kamran Ahmed
41de9c47b0 Add partner images 2023-05-08 22:48:45 +01:00
Kamran Ahmed
0ba1a8a1d1 Rearrange scripts 2023-05-08 22:16:27 +01:00
Kamran Ahmed
6fcb153244 Fix invalid markdown language warnings 2023-05-08 21:12:34 +01:00
Kamran Ahmed
7a8d97b1cd Refactor analytics 2023-05-08 21:06:33 +01:00
Kamran Ahmed
9e37076d0d Add preconnect for ga and api 2023-05-08 20:59:57 +01:00
Kamran Ahmed
f8e5661353 Refactor perf issues 2023-05-08 20:54:56 +01:00
Kamran Ahmed
4d4cda6cac Fix accessibility issues 2023-05-08 20:37:26 +01:00
Arik Chakma
8b528f39f2 fix: broken link (#3897) 2023-05-08 16:58:35 +01:00
Kamran Ahmed
e1a04b4a20 Update username 2023-05-08 14:36:21 +01:00
Kamran Ahmed
f0e8ffe565 Fix spelling mistake 2023-05-06 16:42:12 +01:00
Kamran Ahmed
f9c1e64235 Add docker roadmap to readme 2023-05-06 01:44:25 +01:00
Kamran Ahmed
0174c9156b Fix formatting issue 2023-05-05 22:51:38 +01:00
Kamran Ahmed
2ee81e6ff3 Add docker roadmap 2023-05-05 22:49:57 +01:00
Kamran Ahmed
42ab5a3e9e Add docker roadmpa 2023-05-05 22:49:57 +01:00
Kamran Ahmed
e9fa663410 Notify icon 2023-05-05 12:16:07 +01:00
Kamran Ahmed
2d17a267be Refactor upcoming form 2023-05-04 18:18:44 +01:00
Arik Chakma
40371cdded fix: notify for upcoming page (#3887)
* chore: upcoming login

* fix: subscribed button
2023-05-04 18:09:32 +01:00
Arik Chakma
6bb315a2fc fix: featured items heading position (#3837) 2023-05-03 14:48:21 +01:00
Kamran Ahmed
fc2c9a1439 Remove sponsors and relevant codebase 2023-05-03 12:50:15 +01:00
Kamran Ahmed
b50935ecd6 Remove delay for sponsors 2023-05-03 04:09:09 +01:00
Kamran Ahmed
9b73d60c5d Add support for multiple ads 2023-05-03 03:14:04 +01:00
Kamran Ahmed
504ee8cf5e Add support for multiple ads 2023-05-02 20:48:01 +01:00
Kamran Ahmed
057bbddd9f Add support for multiple ads 2023-05-02 20:48:01 +01:00
Joshua
4063979c2a Fix typo (#3797) 2023-05-02 20:34:17 +01:00
Rita Bradley
da391fe9ed Fix typos (#3795)
* Fix typos

- Add 's' to reason
- Change "it's" to is
- Remove unnecessary hyphen

* Fix typos

- change 'remove' to 'removing'
- change comma to semicolon

* Fix typos

- change "don't" to "doesn't"
- add "is" before "relied upon"
2023-05-02 20:33:33 +01:00
Kamran Ahmed
953ca9257c Fix typo on homepage 2023-05-01 17:02:16 +01:00
Kamran Ahmed
396bedd319 Update sponsor banners 2023-05-01 16:50:59 +01:00
Edwin Manual
b6c8260faf fix: Correct syntax error in Promise initialization example by adding space 2023-04-29 07:27:34 +05:30
The New Stack
e05269f117 Add TypeScript installation guide (#3791)
* Added 1 TNS Article

* Update src/data/roadmaps/typescript/content/100-typescript/102-install-configure/index.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-04-27 13:58:30 +01:00
Kamran Ahmed
77c7ca8835 Update badges 2023-04-27 12:41:08 +01:00
Kamran Ahmed
e877f5c610 Add code review best practices 2023-04-27 12:39:16 +01:00
Kamran Ahmed
42e1a79697 Update code review pdf 2023-04-26 21:12:09 +01:00
Kamran Ahmed
ce32cdc8a4 Update code review texts 2023-04-26 20:54:29 +01:00
Kamran Ahmed
e2a0bd23c0 Add best practice content 2023-04-26 17:44:02 +01:00
Kamran Ahmed
98f0ebde8b Add code-review best practices 2023-04-26 17:17:39 +01:00
Kamran Ahmed
bc018f8b39 Add code review best practices 2023-04-26 15:57:32 +01:00
Kamran Ahmed
03bd478aaa Add data aggregation command 2023-04-26 13:47:19 +01:00
Kamran Ahmed
67a8582c22 Fix overlapping login and videos 2023-04-24 18:07:51 +01:00
Kamran Ahmed
7533575df9 Update PgQ (#3856) 2023-04-24 15:29:21 +01:00
Kamran Ahmed
34fcd74d93 Update ad text 2023-04-21 20:27:52 +01:00
Kamran Ahmed
1558feb734 Update liblab link 2023-04-21 19:48:38 +01:00
Kamran Ahmed
bc4d9f9e2f Add postgresql dba pdf 2023-04-19 22:11:00 +01:00
Kamran Ahmed
4142c7b51e Compress postgresql json 2023-04-19 21:55:56 +01:00
Kamran Ahmed
e36a749223 Update postgresql roadmap 2023-04-19 21:55:22 +01:00
Kamran Ahmed
e69d9b4238 Add PEV2 2023-04-19 15:28:14 +01:00
Kamran Ahmed
3132a39816 Fix sponsor opener 2023-04-19 00:57:41 +01:00
Kamran Ahmed
03f9fa51ff Update roadmap node 2023-04-18 14:36:54 +01:00
Kamran Ahmed
e2062aefe9 Update postgresql roadmap 2023-04-18 14:24:58 +01:00
Kamran Ahmed
855ba7bbfb Add postgresql roadmap 2023-04-18 14:24:58 +01:00
Kamran Ahmed
ad71b6398d Fix styling issue 2023-04-18 14:24:57 +01:00
Kamran Ahmed
0ea0629104 Add postgresql-dba content 2023-04-18 14:24:57 +01:00
Kamran Ahmed
8b2f12fcdd Improve the content writing performance 2023-04-18 14:24:57 +01:00
Kamran Ahmed
e66bff74bf Add postgresql-dba content 2023-04-18 14:24:57 +01:00
github-actions[bot]
58ea34bb49 chore: update sponsors (#3821)
Co-authored-by: kamranahmedse <kamranahmedse@users.noreply.github.com>
2023-04-17 15:01:32 +01:00
Kamran Ahmed
275c2c3c88 Add noindex pages 2023-04-17 00:57:20 +01:00
Kamran Ahmed
f13c29adad Enable github auth 2023-04-14 21:17:49 +01:00
Kamran Ahmed
ec9f836a1f Fix check icon 2023-04-14 20:56:24 +01:00
Kamran Ahmed
589d157be5 Disable github login for now 2023-04-14 20:16:38 +01:00
Kamran Ahmed
a2719bc771 feat: user accounts functionality (#3813)
* feat: integrate astro

* chore: login popup design

* chore: data-popup changed

* refactor: github and google button

* chore: signup page

* chore: login popup design

* chore: signup page design

* chore: auth divider

* feat: integrate astro

* chore: login popup design

* chore: data-popup changed

* refactor: github and google button

* chore: signup page

* chore: login popup design

* chore: signup page design

* chore: auth divider

* chore: login feature

* chore: login error message

* chore: added name in token decode return

* chore: use auth hook

* chore: logout vs login

* chore: download button link

* chore: account dropdown

* fix: dropdown z index

* chore: profile page

* Add missing content for backend roadmap

* Remove unused styles

* Add login with google

* chore: google login implementation

* chore: profile guard clause

* fix: button size

* chore: preact to astro components

* chore: preact to astro comp

* chore: github astro component

* chore: google login error handling

* chore: github login error handling

* chore: change password page

* chore: rename profile to password

* fix: change password rename

* chore: update profile page

* chore: setting sidebar

* fix: setting dropdown design

* chore: required indicator

* chore: change password form

* chore: update profile form

* chore: mobile navigation

* fix: form data empty error

* chore: email login and signup components

* chore: forgot password page

* chore: reset password page

* chore: verify account page

* chore: resend verification email

* fix: types in spinner

* chore: forgot password functionality

* fix: class -> className

* chore: reset password page

* chore: reset password functionality

* chore: login page

* fix: spacing for login and signup page

* refactor: email login form

* chore: astro spinner

* chore: pre-fill user data

* chore: dummy placeholder

* chore: forgot password link add

* fix: replaced constants

* chore: forgot password link

* chore: change password for social provider

* chore: internal pages guard

* chore: internal paths

* refactor: change password errors

* refactor: update profile errors

* chore: mark as done overlay

* fix: uncontrolled to controlled form

* fix: de-structure error

* chore: error messages

* fix: 401 error code redirect to login page

* chore: loading spinner accessibilities

* fix: remove spinner

* chore: keep spinner after success to redirect

* chore: keep the spinner

* style: resend email underline

* chore: chevron down account

* chore: roadmap pdf link download

* chore: roadmap pdf link download

* chore: best practices buttons

* fix: verify account text

* fix: topic overlay hide

* chore: base verify design

* chore: email verify page

* fix: div tag missing

* Formatting

* Refactor top navigation

* Prettier

* Update dependencies

* Refactor top navigation

* Refactor login button

* Remove captcha and add google scripts

* Refactor email sign up form

* Resend verfication email functionality

* Refactor verification pending page

* Add verify account functionality

* Update signup text

* Add login page

* Add login button in top nav

* Email login form

* Handle authenticatoin

* Show hide auth elements change

* Add ease-in on the guest elements

* Refactor logic for download and subscribe popups

* Add forgot password

* Rename fetch lib

* Add authentication popup

* Refactor logic for mark done and pending

* Handle logout

* Add route protection

* Popup opener to close the overlay

* Remember page when logging in

* Add reset password page

* Change placement of constant

* Update profile page

* Add update password form

* Update password page

* Update profile page

* Update design

* chore: toggle mark resource done api

* chore: toggle topic done

* chore: get user resource progress api

* fix: best practice topic toggle

* chore: fetch progress

* fix: query selector for topics

* Keep track of the old page before social login

* Update public api url

* Add user progress tracking

* Update topic done functionality

* Add progress loader

* Add page wide spinner

* Add spinner on setting pages

* Add fingerprint to user requests

* Use http wrapper instead of fetch

* Update fingerprint

* Minor improvements

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
2023-04-14 19:22:52 +01:00
Umair Raza
c5645299aa Issues: Text not showing up properly #3796 (#3802) 2023-04-12 12:09:25 +01:00
Kamran Ahmed
6aac3f296c Remove youtube banner from top 2023-04-08 13:57:32 +01:00
Haseeb Ansari
137635f11a fix: wrong MAN explanation (#3771)
Co-authored-by: haseeb.ansari <haseeb.ansari@qordata.com>
2023-04-07 18:55:53 +01:00
Jens Rottiers
03f69c02c1 Fixed typo in the word tutorial 2023-04-06 10:08:45 +02:00
karthikeyantc
8487d2f443 Updated the Route Guard for Angular (#3731)
* Update 104-guards.md

Added the link for resolve route guard

* Update 103-router-events.md

Added the documentation for Router events.

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-04-05 17:35:19 +01:00
github-actions[bot]
a7bee1fea7 chore: update dependencies to latest (#3744)
Co-authored-by: kamranahmedse <kamranahmedse@users.noreply.github.com>
2023-04-05 17:34:13 +01:00
CMarghin
43292de507 Fix typo, replace Interface with Inference (#3750) 2023-04-05 17:32:51 +01:00
Sanjay Singha
bee30defb5 Add content for FVM (#3759)
* Adding content for FVM

* Update src/data/roadmaps/flutter/content/101-setup-development-environment/102-fvm.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-04-05 17:32:20 +01:00
Pedro Macedo
52649a2d3c Change react docs link (#3742) 2023-04-05 17:31:04 +01:00
Salah Eddine Mebkhouti
be47ac6573 Update invalid link (#3752)
Co-authored-by: AIpills <x9one@pop-os.localdomain>
2023-04-04 14:09:15 +01:00
Arik Chakma
24ce27090e Fix guide type (#3754) 2023-04-04 14:08:50 +01:00
Ehren Nwokocha
8dd0225720 Fix minor typo (#3756)
I replaced and with it in the Javascript versioning paragraph
2023-04-04 14:08:30 +01:00
Kamran Ahmed
9893e9f0a3 Add singlestore links 2023-04-03 22:33:03 +01:00
Kamran Ahmed
caf1cd0269 Minor update 2023-04-03 21:37:13 +01:00
Kamran Ahmed
d21c1f6d0d Add sponsors 2023-04-03 19:15:10 +01:00
Kamran Ahmed
9d38cf7650 Add liblab content 2023-04-03 15:26:15 +01:00
Kamran Ahmed
d232d3bbd0 Update sponsors 2023-04-01 01:37:24 +01:00
Dimension
366d893df9 Fix invalid link (#3734)
Co-authored-by: Hitesh <hitesh.g@smarter.codes>
2023-03-30 18:20:01 +01:00
Kamran Ahmed
ff27561765 Remove unused styles 2023-03-30 18:17:27 +01:00
Kamran Ahmed
133642e05f Add missing content for backend roadmap 2023-03-30 16:34:39 +01:00
Kamran Ahmed
7434ff71eb Run prettier 2023-03-30 01:23:01 +01:00
Arik Chakma
d081ecf5b3 tooling: prettier for astro and tailwind (#3732)
* tooling: prettier for astro and tailwind

Prettier configuration for Astro component's formatting and Tailwind CSS class sorting.

* fix: single quote for props
2023-03-30 01:10:47 +01:00
Kamran Ahmed
d8a039690b Add a button to join on discord 2023-03-28 17:53:48 +01:00
Rahul Saw
56f0df549d Removed a link (#3697)
I think there is no need to use one more link for the exact same example.
The link that I have removed, redirects the user to the old react documentation which is already listed in this md file as "Reusing Logic with Custom Hooks".
2023-03-28 17:07:43 +01:00
Kamran Ahmed
b042161e29 Broken style of code 2023-03-28 17:04:21 +01:00
Kamran Ahmed
db273210fd Fix broken build 2023-03-28 15:47:14 +01:00
Kamran Ahmed
9370e262c0 Add content for mongodb-aggreagtion 2023-03-28 15:35:11 +01:00
Kamran Ahmed
e0f9bc8456 Add mongodb content 2023-03-28 14:05:57 +01:00
Kamran Ahmed
af211ab129 Add related roadmaps 2023-03-27 23:12:06 +01:00
Kamran Ahmed
eab1fb31b2 Fix typo 2023-03-27 21:25:50 +01:00
Kamran Ahmed
c36fd71ec1 Add content for cyber-security roadmap 2023-03-27 21:20:39 +01:00
Kamran Ahmed
7d0e35d7ae Update wireframing tools 2023-03-27 14:40:35 +01:00
Kamran Ahmed
59d881a77b Update ux design roadmap description 2023-03-27 13:43:27 +01:00
Kamran Ahmed
b57e3ecc75 Add content for UX Design Roadmap 2023-03-27 13:26:14 +01:00
Kamran Ahmed
cd5c0c10a2 Add content to UX Design Roadmap 2023-03-27 12:49:19 +01:00
Kamran Ahmed
10a5e4c0ae Add content to UX Design Roadmap 2023-03-27 12:41:38 +01:00
Kamran Ahmed
432983631d Add content to UX Design Roadmap 2023-03-27 12:39:02 +01:00
Kamran Ahmed
29189062b9 Add content to UX Design Roadmap 2023-03-27 06:04:38 +01:00
Kamran Ahmed
84138d5049 Update prompt 2023-03-27 04:38:47 +01:00
Kamran Ahmed
c28ac4b078 Add content writing command 2023-03-27 04:11:34 +01:00
Kamran Ahmed
66bdbd7458 Automate the title creation in new roadmap content 2023-03-27 03:44:54 +01:00
Kamran Ahmed
907f820778 Rename roadmap/best-practice content to dirs 2023-03-27 03:08:19 +01:00
Kamran Ahmed
ec0a8a99ef Add content to UX roadmap 2023-03-27 03:04:34 +01:00
Kamran Ahmed
a7a342c8e7 Add link to UX Design Roadmap 2023-03-26 22:03:50 +01:00
Kamran Ahmed
e0e26580fa Add UX design roadmap pdf 2023-03-26 21:45:49 +01:00
Kamran Ahmed
f9d96d415f Add ux-design roadmap 2023-03-26 21:45:49 +01:00
github-actions[bot]
e1c22932be chore: update dependencies to latest (#3720)
Co-authored-by: kamranahmedse <kamranahmedse@users.noreply.github.com>
2023-03-26 00:14:53 +00:00
Chandresh Patidar
9dae1b3595 Update 114-never.md (#3716)
Replace a deprecated link with new link for `never` type documentation
2023-03-25 15:40:07 +00:00
Kamran Ahmed
cdb642c8d4 Update newsletter 2023-03-25 04:10:40 +00:00
Arik Chakma
71b43af862 fix: upcoming button overlap (#3713)
* docs: new resources for jsx and functional components

* fix: upcoming button overlap
2023-03-24 15:08:17 +00:00
github-actions[bot]
69dccb3fcc chore: update dependencies to latest (#3677)
Co-authored-by: kamranahmedse <kamranahmedse@users.noreply.github.com>
2023-03-21 23:45:15 +00:00
Akshay Jagiasi
ca6ddb4654 How Bitcoin Blockchain actually work video added (#3684)
* How Bitcoin Blockchain actually work video added

* Delete package-lock.json
2023-03-21 23:44:28 +00:00
Ivan Kibala
0ac6fc70ff Fix typo (#3686)
Fix typo
2023-03-21 23:42:54 +00:00
Sandro Fiorio de S. Júnior
5ddb021898 Add content to QA roadmap (#3688)
Co-authored-by: Sandro Fiorio <sandrofioriojr@gmail.com>
2023-03-21 23:42:38 +00:00
Julio Martins
d227603a59 feat: added description and content at FastAPI on Python Roadmap (#3678) 2023-03-20 19:41:49 +00:00
Yerkebulan
e0d70950ac Fix ORM title (#3682)
Update title. Orms to ORMs
2023-03-20 19:39:28 +00:00
Kamran Ahmed
148bfd8736 Add guide on jump servers 2023-03-20 19:37:31 +00:00
Kamran Ahmed
648985cefc Update font and page size for guide page 2023-03-20 18:13:13 +00:00
Kamran Ahmed
9321ac6aa1 Add guide on jump servers 2023-03-20 17:46:22 +00:00
Kamran Ahmed
170ab3a6cf Update git resources 2023-03-20 17:46:22 +00:00
Shreyas Karanam
708fa31998 Fix typo in FAQ (#3658)
Removed multiple AWS listings
2023-03-18 21:41:47 +00:00
Aroyan
f83a1a6c3b Update links to the latest React documentation (#3675)
* feat: add Set JavaScript content

* refactor: update links to the latest react documentation

This commit updates all links that referred to outdated(legacy) React documentation to the latest version
2023-03-18 20:39:05 +00:00
Lane Wagner
dc1d7ef226 Add the complete Docker course by Boot.dev to back-end and devops roadmaps (#3676) 2023-03-18 20:38:12 +00:00
Aroyan
808bd40cce fix: update react docs to new url (#3656)
* feat: add Set JavaScript content

* fix: update react docs and remove beta docs

* update react docs url
2023-03-17 11:15:36 +00:00
Kamran Ahmed
45ce59b10d Add guide for semantic HTML 2023-03-17 02:47:27 +00:00
wagslane
e3f41ec0e3 add updated HTTP networking course 2023-03-16 20:33:55 +00:00
Kamran Ahmed
4f821d0f1d Add PDF and image for MongoDB roadmap 2023-03-16 20:32:14 +00:00
kamranahmedse
ec1283a5dc chore: update sponsors 2023-03-16 20:27:49 +00:00
Kamran Ahmed
4da909d358 Add MongoDB roadmap link 2023-03-16 20:27:19 +00:00
Kamran Ahmed
0beb9ad239 Add MongoDB roadmap 2023-03-16 20:23:47 +00:00
Kamran Ahmed
c6213dde92 Update guides 2023-03-16 18:36:05 +00:00
Kamran Ahmed
3d655965f6 Add event tracking for done/pending 2023-03-16 02:09:26 +00:00
Kamran Ahmed
c5c2ee3b2c Update events 2023-03-16 01:54:41 +00:00
Kamran Ahmed
cad0813eb6 Add event for roadmap switch 2023-03-16 01:05:11 +00:00
Kamran Ahmed
f9c1e6e0a2 Add event tracking for topic load 2023-03-16 00:58:10 +00:00
Kamran Ahmed
d3578756d4 Add event tracking for topic load 2023-03-16 00:53:02 +00:00
Kamran Ahmed
5fe506324a Add article for secrets management 2023-03-15 23:05:33 +00:00
Kamran Ahmed
bc007dcc9b Add article for DevOps language 2023-03-15 23:04:22 +00:00
Arthur Henrique
42a5d5bba6 feat: Include atlassian tutorials in git section (#3557)
Atlassian's Git Tutorials come across the beginning up to advanced tips on git usage, a great place to dive into its understanding
2023-03-14 08:56:02 +00:00
The New Stack
f908c5371d Added TNS K8s Overview Page (#3558) 2023-03-14 08:53:46 +00:00
The New Stack
78964b9f65 Added TNS K8s Primer Article (#3559) 2023-03-14 08:53:25 +00:00
The New Stack
9f11de60ed Added TNS K8s Explainer YouTube Video (#3560) 2023-03-14 08:53:09 +00:00
The New Stack
4ba28b702b Added 2 TNS K8s Alternative Resources (#3561) 2023-03-14 08:52:39 +00:00
The New Stack
45c6fc873f Added TNS K8s Deployment Tutorial (#3562) 2023-03-14 08:52:15 +00:00
The New Stack
23b7c21502 Added TNS Article for Cluster Deployment on Ubuntu (#3564) 2023-03-14 08:52:01 +00:00
The New Stack
d474d07ebb Added 2 TNS Articles on K8s Managed Services (#3563) 2023-03-14 08:47:09 +00:00
The New Stack
7d08572d78 Added 2 TNS Articles Covering K8s Pods (#3565) 2023-03-14 08:46:28 +00:00
The New Stack
17fc85f893 Added TNS Article for K8s Sets (#3566) 2023-03-14 08:45:56 +00:00
github-actions[bot]
5ccba8d7c0 chore: update dependencies to latest (#3576)
Co-authored-by: kamranahmedse <kamranahmedse@users.noreply.github.com>
2023-03-14 08:45:14 +00:00
Alex Ivanovs
fefbb4f833 Updating resources for React Router (#3586)
I'm adding a link to a React Router cheatsheet/reference covering examples of various routes, including core components and routers introduced in v6.4.
2023-03-14 08:42:26 +00:00
The New Stack
bcbc9c9d54 Added TNS Article for Building Stateful K8s Applications (#3587) 2023-03-14 08:40:47 +00:00
The New Stack
73d1d0e389 Added TNS Article About K8s as Universal Schedular (#3588) 2023-03-14 08:40:25 +00:00
The New Stack
14856560c3 Added TNS Article on K8s Ingress for Beginners (#3589) 2023-03-14 08:39:56 +00:00
The New Stack
b097395c07 Added TNS Article on Ingress Controllers for K8s (#3590) 2023-03-14 08:39:29 +00:00
The New Stack
929be729e5 Added TNS Article on K8s Networking (#3591) 2023-03-14 08:39:07 +00:00
The New Stack
1eb8fab15e Added TNS Article on CRD and ConfigMaps (#3592) 2023-03-14 08:38:49 +00:00
The New Stack
51233c8011 Added TNS Article on Secrets Management (#3593) 2023-03-14 08:38:26 +00:00
The New Stack
0081e9059c Added 2 TNS Articles on Resource Types, Requests, Limits (#3594) 2023-03-14 08:38:02 +00:00
The New Stack
4e66148777 Added TNS Article on Namespaces (#3595) 2023-03-14 08:37:48 +00:00
The New Stack
18e430be0b Added TNS Article on Choosing Monitoring Tools (#3596) 2023-03-14 08:37:22 +00:00
The New Stack
e39d0d93e0 Added 5 TNS Articles on K8s Access Control (#3605) 2023-03-14 08:37:05 +00:00
The New Stack
9260dc36b5 Added 3 TNS Articles on K8s Network Security (#3606) 2023-03-14 08:36:16 +00:00
The New Stack
f5f846ed73 Added 2 TNS Articles on Container and Pod Security (#3607) 2023-03-14 08:35:55 +00:00
The New Stack
7518d60013 Added 2 TNS Articles on K8s Security Scanning (#3608) 2023-03-14 08:35:31 +00:00
Kamran Ahmed
59d9674d75 Add guide about SSL certificates 2023-03-13 21:49:49 +00:00
Kota Hayashi
16fb03086e Add riverpod desc (#3599)
* Add riverpod desc

* Update src/data/roadmaps/flutter/content/111-state-management/102-riverpod.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-03-13 20:37:19 +00:00
Kamran Ahmed
c0f46c5eed Add support for ads on best-practices 2023-03-13 18:04:20 +00:00
Kamran Ahmed
b5b8b92791 Update sponsors workflow 2023-03-13 18:02:15 +00:00
kamranahmedse
8f90dac32e chore: update sponsors 2023-03-13 17:44:48 +00:00
Kamran Ahmed
e9f3a616d1 Add FAQs for DevOps 2023-03-10 01:05:41 +00:00
Kamran Ahmed
c28ed87247 Compress json 2023-03-09 17:07:04 +00:00
Kamran Ahmed
53fb6313db Add link to AWS best practices 2023-03-09 17:05:42 +00:00
Kamran Ahmed
cc933b238d Add best practices for AWS 2023-03-09 16:54:50 +00:00
github-actions[bot]
48fba932b4 chore: update dependencies to latest (#3530)
Co-authored-by: kamranahmedse <kamranahmedse@users.noreply.github.com>
2023-03-06 18:20:40 +00:00
Kamran Ahmed
9961259ffb Fix typo 2023-03-04 23:58:23 +00:00
Kamran Ahmed
cab2054c1d Add related roadmaps to each roadmap page 2023-03-04 23:55:14 +00:00
Kamran Ahmed
d34affb420 Add related roadmaps to each roadmap page 2023-03-04 23:51:40 +00:00
Kamran Ahmed
ee4f0980bc Link to best practices from roadmaps 2023-03-04 18:43:28 +00:00
Kamran Ahmed
37fdd010a8 Add Cyber Security roadmap 2023-03-04 18:28:18 +00:00
Kamran Ahmed
aa04c51a12 Add PDF url 2023-03-04 18:27:35 +00:00
Kamran Ahmed
7993f12d12 Add content for certs and ctfs 2023-03-04 18:27:03 +00:00
Kamran Ahmed
1a3265295c Add directories for content 2023-03-04 18:27:02 +00:00
Kamran Ahmed
238245431b Add cyber-security roadmap 2023-03-04 18:27:02 +00:00
rakibulhaq
48c04055d5 Fix - Typo in 3rd line of migration strategies (#3522)
Solves the issue #3520
2023-03-03 09:00:15 +00:00
Kamran Ahmed
596b8f56ac Update frontend beginner roadmap 2023-03-02 23:34:53 +00:00
Kamran Ahmed
45267693e2 Addevent on switch 2023-03-02 22:13:25 +00:00
Kamran Ahmed
f932df8627 Use query parameters for roadmap switching 2023-03-02 22:05:58 +00:00
Kamran Ahmed
8dcf4b00c4 Refactor frontend roadmap for beginners 2023-03-02 21:58:14 +00:00
Kamran Ahmed
cb32a9610d Add beginner version of frontend roadmap 2023-03-02 19:19:34 +00:00
Kamran Ahmed
01c090f62d Update renderer 2023-03-02 15:41:49 +00:00
Kamran Ahmed
60b1edcab9 Update event labels for sponsor links 2023-03-01 23:04:32 +00:00
Kamran Ahmed
d08887060f Update sponsor workflow title 2023-03-01 02:39:52 +00:00
Kamran Ahmed
24a6c4930e Update sponsors workflow 2023-03-01 02:31:18 +00:00
Kamran Ahmed
e57b889f73 Add script to update sponsors 2023-03-01 02:28:46 +00:00
Kamran Ahmed
c5d14d2543 Update dependencies 2023-03-01 02:22:49 +00:00
Kamran Ahmed
4f0b08ea93 Add sponsor action 2023-03-01 02:19:56 +00:00
github-actions[bot]
47e2dbdd12 chore: update dependencies to latest (#3445)
Co-authored-by: kamranahmedse <kamranahmedse@users.noreply.github.com>
2023-03-01 01:27:31 +00:00
Kamran Ahmed
f1ad70acd9 Update backend, js and python 2023-03-01 00:40:28 +00:00
Kamran Ahmed
ac230bbf29 Add sponsor links on the roadmaps 2023-03-01 00:40:28 +00:00
prchann
d0861711ac Fix a link issue in markdown (#3508) 2023-02-28 19:20:46 +00:00
Amin Rezaei
74b2dda7f7 Fix heading for content file (#3509)
Removed unnecessary heading <code> tag.
2023-02-28 19:17:36 +00:00
Kamran Ahmed
2b49fa3182 Add responsive widgets 2023-02-28 19:16:46 +00:00
Kamran Ahmed
e2a8240e35 Add FVM 2023-02-28 19:12:05 +00:00
Kamran Ahmed
a7f45c0af1 Fix some flutter nodes not clickable 2023-02-28 17:31:39 +00:00
Kamran Ahmed
77a6270bd7 Update flutter roadmap 2023-02-28 17:29:47 +00:00
Kamran Ahmed
64d3ad662c Add riverpod and remove getx 2023-02-28 17:18:41 +00:00
Kamran Ahmed
c8b8e12b64 Add guide for database setup 2023-02-27 10:56:39 +00:00
Tobias Uhmann
8f94a5887e Update 101-jdbc-template.md (#3478)
Clarify in the first sentence that "the JDBC core package" is about Spring
2023-02-25 18:49:54 +00:00
Aroyan
00b6217e63 feat: add urql content (#3483) 2023-02-25 18:49:33 +00:00
João
1a0d7463eb Add Interactive Git Branching Guide by pcottle (#3486)
Github repo of added resource: https://github.com/pcottle/learnGitBranching
2023-02-25 18:49:20 +00:00
Olusola Amoo
983ee44632 fix(blockchain-content): Fix typo in roadmaps > blockchain > security > tools content (#3489) 2023-02-25 18:49:03 +00:00
Olusola Amoo
f393cb186e fix(blockchain-content): fix typo in blockchain solidity content (#3490) 2023-02-25 18:48:45 +00:00
devwithsmf
70edfb0ac2 Adding content to Kubernetes Roadmap (#3477)
* Update 100-kubernetes-overview.md

* Update 101-why-kubernetes.md

* Update 102-key-concepts-terminologies.md

* Update 103-kubernetes-alternatives.md

* Update index.md

* Update 100-installing-a-local-cluster.md

* Update 101-why-kubernetes.md

* Update 102-key-concepts-terminologies.md

* Update 103-kubernetes-alternatives.md

* Update index.md

* Update 100-installing-a-local-cluster.md

* Update 101-choosing-a-managed-provider.md

* Update 102-deploying-your-first-application.md

* Update index.md

* Update 100-pods.md

* Update 101-replicasets.md

* Update 103-statefulsets.md

* Update 103-statefulsets.md

* Update 104-jobs.md

* Update index.md

* Update 100-networking-and-pod-to-pod-communication.md

* Update 101-load-balancing.md

* Update 102-external-access-to-services.md

* Update index.md

* Update 100-config-maps.md

* Update 101-secrets.md

* Update index.md

* Update 100-setting-resource-requests-and-limits.md

* Update 101-assigning-quotas-to-namespaces.md

* Update 102-monitoring-and-optimizing-resource-usage.md

* Update 102-monitoring-and-optimizing-resource-usage.md

* Update index.md

* Update 100-role-based-acccess-control.md

* Update 101-network-security.md

* Update 102-container-and-pod-security.md

* Update 103-security-scanners.md

* Update index.md

* Update 100-logs.md

* Update 101-metrics.md

* Update 102-traces.md

* Update 103-resource-health.md

* Update 104-observability-engines.md

* Update index.md

* Update 100-horizontal-pod-autoscaler.md

* Update 101-vertical-pod-autoscaler.md

* Update 102-cluster-autoscaling.md

* Update index.md

* Update 100-scheduling-basics.md

* Update 101-taints-and-tolerations.md

* Update 102-topology-spread-constraints.md

* Update 103-pod-priorities.md

* Update 104-evictions.md

* Update index.md

* Update 100-csi-drivers.md

* Update 101-stateful-applications.md

* Update index.md

* Update 100-ci-cd-integration.md

* Update 101-gitops.md

* Update 102-helm-charts.md

* Update 103-canary-deployments.md

* Update 104-blue-green-deployments.md

* Update 105-rolling-updates-rollbacks.md

* Update index.md

* Update 100-custom-controllers.md

* Update 101-custom-schedulers-extenders.md

* Update 102-custom-resource-definitions.md

* Update 103-kubernetes-extensions-and-apis.md

* Update 104-own-cluster.md

* Update 105-control-plane-installation.md

* Update 106-managing-worker-nodes.md

* Update 107-multi-cluster-management.md

* Update index.md

* Update index.md
2023-02-25 18:46:21 +00:00
Bernd Hobbie
ed07d34d64 Move 'exclude' option in tsconfig.json out of 'compilerOptions (#3479) 2023-02-25 18:44:43 +00:00
Appasaheb Nage
831521ae10 Update tsconfig (#3496) 2023-02-25 18:44:12 +00:00
Kamran Ahmed
e29289f0dc Add API Security PDF 2023-02-22 09:48:13 +00:00
Kamran Ahmed
0fd3eb0cc6 Add link to API Security Best Practices 2023-02-21 19:41:54 +00:00
Kamran Ahmed
f58a77010b Add content for API security best practices 2023-02-21 19:37:35 +00:00
Kamran Ahmed
6303e31c0e Add content for API security best practices 2023-02-21 19:22:15 +00:00
Kamran Ahmed
dfc2d39427 Add content to API security best practices 2023-02-21 15:48:03 +00:00
Kamran Ahmed
5e75026424 Add content to API security best practices 2023-02-21 15:39:34 +00:00
Kamran Ahmed
7a4c077a90 Add content for API security best practices 2023-02-21 15:16:15 +00:00
Kamran Ahmed
e45c49a404 Fix broken build 2023-02-21 12:44:44 +00:00
Kamran Ahmed
b6a0255f12 Change location for data files 2023-02-21 12:25:58 +00:00
Kamran Ahmed
b741a0e1ee Add support for link-groups 2023-02-20 16:59:02 +00:00
Kamran Ahmed
8200993af4 Update subscription 2023-02-14 14:07:49 +00:00
Kamran Ahmed
5c1d803892 Fix mistake in constructor overloading 2023-02-13 14:19:30 +00:00
Natan Yellin
dcf0f94af9 Update 101-containers.md (#3440) 2023-02-10 21:03:58 +00:00
Artem Gontar
4ad8886aa0 fix: broken link to Circuit Breaker AWS WAF (#3304) 2023-02-10 18:39:44 +00:00
Lucas Soares
a1143cd6cb Add content to Node.js roadmap (#3305) 2023-02-10 18:38:06 +00:00
mohd-e-mustafa
f130c706da Add filtering content (#3355)
* Updated 100-filtering.md added content

* Update content

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-02-10 18:31:23 +00:00
mohd-e-mustafa
8068face54 Add rate-limiting content (#3364)
* Update 101-rate-limiting.md

* Update src/roadmaps/angular/content/101-rxjs-basics/104-operators/101-rate-limiting.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-02-10 18:27:15 +00:00
Benson Arafat
39866117a6 Update Nuxt resources (#3365)
The current version of nuxt is v3.
Update source to v3
2023-02-10 18:25:32 +00:00
mohd-e-mustafa
df7aa17f86 Add content for RxJS transformation (#3369) 2023-02-10 18:22:45 +00:00
payal pagariya
ee6572660b Add resources for data structures (#3374)
Added resources related to stack, queue and recursion all implemented in JavaScript
2023-02-10 18:20:56 +00:00
Jorge Martin
9875a2d6f7 Fix spelling mistake (#3378) 2023-02-10 18:15:45 +00:00
Nikita Monastyrskiy
5b180e2597 Add content to globby (#3432) 2023-02-10 18:10:39 +00:00
Nikita Monastyrskiy
6f05972493 Add content to fs-extra (#3433) 2023-02-10 18:10:15 +00:00
Felipe Riveras
4bd182e4d0 Add MDN resources for hosting (#3436)
this articles explain very good the term and explain with clarity
2023-02-10 18:08:30 +00:00
Israni, Murli
68d319cacb Fix spelling mistake (#3439) 2023-02-10 18:08:00 +00:00
Mohammad Morakabati
3e76df8d2a Add gRPC resources (#3429) 2023-02-10 18:07:37 +00:00
Kamran Ahmed
9d69477947 Fix broken URLs 2023-02-10 17:55:18 +00:00
Kamran Ahmed
e0ead47fb1 Add kubernetes roadmap 2023-02-10 15:49:39 +00:00
Kamran Ahmed
253c88542f Upgrade dependencies 2023-02-10 15:49:39 +00:00
andran777
5bca9834fb Update Spring Boot scope content (#3398) 2023-02-08 17:42:45 +00:00
Jesse Chang
dde6e3d3df Remove beego link (#3403)
* Update 100-beego.md

New official documentation website.

* Update src/roadmaps/golang/content/104-go-web-frameworks/100-beego.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-02-08 16:12:05 +00:00
Khushi Kothari
6fe8fee25f Add MDN link to Asynchronous JavaScript (#3404)
* Update index.md

* Update src/roadmaps/javascript/content/112-javascript-asynchronous-javascript/index.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-02-08 16:09:55 +00:00
Hans Elde
f3622a1b1c Fix the availability numbers (#3410)
* Update 102-availability-in-numbers.md

Updated downtime #s using https://uptime.is/

* Update src/roadmaps/system-design/content/105-availability-patterns/102-availability-in-numbers.md

* Update src/roadmaps/system-design/content/105-availability-patterns/102-availability-in-numbers.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-02-08 16:00:25 +00:00
Muhammad Kamal Fergany
a92bda38f4 Fix a typo in 103-load-balancer.md (#3414) 2023-02-08 15:58:18 +00:00
Kamran Ahmed
b194d167be Make youtube banner non-sticky 2023-02-08 12:29:30 +00:00
Kamran Ahmed
ec04b582a6 Add note for feedback 2023-02-08 12:22:09 +00:00
Kamran Ahmed
f55159a12b Update title for kubernetes page 2023-02-08 11:19:58 +00:00
Kamran Ahmed
938c7796d1 Update title for best practices pages 2023-02-08 11:19:58 +00:00
Paul Reichetanz
e04bd9db05 Fix typos in frontend/123-bonus-content.md (#3423) 2023-02-08 11:00:30 +00:00
Kamran Ahmed
7c837d14da Add link to Kubernetes roadmap 2023-02-07 20:59:11 +00:00
Kamran Ahmed
cc05587d9e Add kubernetes roadmap 2023-02-07 20:49:14 +00:00
Kamran Ahmed
2172014d6e Add dimensions 2023-02-07 20:21:03 +00:00
Kamran Ahmed
98d43e76b7 Add kubernetes roadmap 2023-02-07 20:19:39 +00:00
Kamran Ahmed
7665970813 Add kubecampus snippet 2023-02-06 21:55:55 +00:00
Kamran Ahmed
d96e5890b9 Add content to TypeScript roadmap 2023-02-06 21:26:56 +00:00
Kamran Ahmed
659bd93094 Add content to TypeScript roadmap 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
a4dddfb19b Adding content to 101-typescript-types 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
12a4be2227 Adding content to 104-undefined 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
9edcb35acb Adding content to 115-type-assertions 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
1df4e4b836 Adding content to 111-utility-types 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
49e78cf1c0 102-type-inference, 103-type-compatibility, 110-decorators 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
a4a29b4efa 114-ecosystem 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
3e49e7f91d 113-modules 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
7627bc73b5 112-advanced-types 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
26eaa40dc1 Adding content to 109-generics 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
45a0b53d5f Adding content to 108-classes 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
7bac3c3444 Adding content to 107-interfaces 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
62905bda7a Adding content to 106-functions 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
179bf366cc Adding content to 104-combining-types 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
59d47c5b1e Adding content to 100-typescript 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
d23ea8e577 Adding content to 103-running-typescript 2023-02-06 21:26:56 +00:00
syedmouaazfarrukh
07f001f8be Adding content to 102-install-configure 2023-02-06 21:26:56 +00:00
Kamran Ahmed
754a91acef Fix invalid link 2023-02-06 15:09:55 +00:00
Kamran Ahmed
16c550211b Fix invalid link 2023-02-06 15:08:33 +00:00
Kamran Ahmed
a56710c43d Remove ambassador and tigera links 2023-02-02 00:11:20 +04:00
CodeGuage
00f94e031e Add link to switch in JS Roadmap (#3380) 2023-01-31 20:56:37 +04:00
Tianzhou (天舟)
d1556c85df docs: add PostGIS and Bytebase to the postgresql-dba roadmap. (#3390) 2023-01-31 20:55:55 +04:00
tim-laue
1885d6d304 Fix broken link (#3381)
Fixed broken link
2023-01-31 20:55:13 +04:00
Zanin Andrea
3b8c8316b3 Add HTTPs content (#3384)
I have added a brief explanation of how the HTTPS protocol works and a new resource to learn more
2023-01-31 20:54:30 +04:00
mohd-e-mustafa
034fd16a1f Add combination content in RxJS (#3385) 2023-01-31 20:53:24 +04:00
Diego Kfuri
aa9bf2f263 fix typo in system designs roadmap (#3395) 2023-01-31 20:52:12 +04:00
syedmouaazfarrukh
6a5df98f4f Add content to flutter roadmap (#3389)
* Adding content to 100-dart-basics

* Adding content to 102-setup-development-environment

* Adding content to 102-styled-widgets

* Adding content to 102-widgets

* Adding content to 103-working-with-assets

* Adding content to 105-repo-hosting-services

* Adding content to 106-design-principles

* Adding content to 107-package-manager

* Adding content to 108-working-with-apis

* Adding content to 102-firebase

* Adding content to 109-storage

* Adding content to 114-reactive programming

* Adding content to 115-dev-tools

* Adding content to 116-flutter-internals

* Adding content to 117-ci-cd

* Adding content to 118-analytics

* Adding content to 119-deployment

* Adding content to 110-advanced-dart

* Adding content to 111-state-management

* Adding content to 112-animations

* Adding content to 113-testing

* Adding content to 102-flutter-bloc, 101-flutter-outline

* Update src/roadmaps/flutter/content/100-dart-basics/104-operators.md

* Update src/roadmaps/flutter/content/101-setup-development-environment/101-ides/index.md

---------

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-01-31 20:49:28 +04:00
Kamran Ahmed
ea02c8835a Add typescript roadmap reference in frontend roadmap 2023-01-31 14:23:18 +04:00
Kamran Ahmed
e13733a503 Add link to TypeScript roadmap 2023-01-31 04:28:24 +04:00
Kamran Ahmed
6f0ad58764 Add TypeScript roadmap (#3391)
* Add typescript roadmap

* Add typescript content

* Add typescript roadmap
2023-01-31 04:05:46 +04:00
Kamran Ahmed
f68c303ffa Fix canonicals on best-practices topic page 2023-01-31 01:19:54 +04:00
Kamran Ahmed
b2c79ff395 Fix canonicals on topic pages 2023-01-31 01:15:13 +04:00
Kamran Ahmed
ff16ea542f Add content to Frontend Best Practices (#3358)
* Add content to Frontend Best Practices

* Add content to frontend performance best practices
2023-01-26 19:55:36 +04:00
payal pagariya
e3adcdaba4 Add resource for algorithsm (#3360)
Added dynamic programming resource having JavaScript code implementation
2023-01-26 00:58:00 +04:00
Saad Shafiq
6783d7ea44 Fixed a typo in python roadmap note 2023-01-25 15:06:20 +04:00
Kamran Ahmed
f06dfce7fb Add best practices to sitemap 2023-01-25 02:53:34 +04:00
Kamran Ahmed
3df8db5fa5 Compress blockchain roadmap 2023-01-25 02:20:10 +04:00
Krish Chopra
5c92cdedd8 Update - content for rxdart under flutter roadmap (#3352)
* Update 100-rxdart.md

* added links to 100-rxdart.md

* Update src/roadmaps/flutter/content/114-reactive-programming/100-rxdart.md

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-01-25 01:58:17 +04:00
Kamran Ahmed
07b6d067c4 Styling for the topic page 2023-01-25 01:55:54 +04:00
Kamran Ahmed
a7f9e7d735 Add pdfs for best practices 2023-01-25 01:55:54 +04:00
Kamran Ahmed
3521525611 Implement the state loading in checklists 2023-01-25 01:55:54 +04:00
Kamran Ahmed
43260ff14f Disable user selection on the rectangles 2023-01-25 01:55:54 +04:00
Kamran Ahmed
102ccc6a6b External links 2023-01-25 01:55:54 +04:00
Kamran Ahmed
415dc2d8e8 Handle mark done/pending functionality in best practices 2023-01-25 01:55:54 +04:00
Kamran Ahmed
e0e6168cfe Remove sorting information from best practices content 2023-01-25 01:55:54 +04:00
Kamran Ahmed
dd7c0ec003 Add forntend performance content 2023-01-25 01:55:54 +04:00
Kamran Ahmed
190c75cebe Toipc pages rendering 2023-01-25 01:55:54 +04:00
Kamran Ahmed
813a3d9b2b Rearrange best practices pages 2023-01-25 01:55:54 +04:00
Kamran Ahmed
c2dda3bc35 Implement best-practice click handling 2023-01-25 01:55:54 +04:00
Kamran Ahmed
4711ab9a6f Handle rendering of the roadmap topics 2023-01-25 01:55:54 +04:00
Kamran Ahmed
5f2836a148 Make topic overlay renderer agnostic 2023-01-25 01:55:54 +04:00
Kamran Ahmed
badb2c029d Refactor the topic loading 2023-01-25 01:55:54 +04:00
Kamran Ahmed
8a24b3e695 Refactor sharer icons 2023-01-25 01:55:54 +04:00
Kamran Ahmed
8b3f8ee6b8 Refactor share icons 2023-01-25 01:55:54 +04:00
Kamran Ahmed
f9db9bee95 Add rendering of best practices 2023-01-25 01:55:54 +04:00
Kamran Ahmed
e8d2bd00c6 Refactor roadmap topic path 2023-01-25 01:55:54 +04:00
Kamran Ahmed
f4e505113c Add rendering for best practices lists 2023-01-25 01:55:54 +04:00
Kamran Ahmed
f675f08d83 Refactor roadmaps 2023-01-25 01:55:54 +04:00
Kamran Ahmed
a12ec64af5 Refactor markdown content 2023-01-25 01:55:54 +04:00
Kamran Ahmed
24512374e8 Update best practices 2023-01-25 01:55:54 +04:00
Kamran Ahmed
359f5d6a4d Add best practices page 2023-01-25 01:55:54 +04:00
Kamran Ahmed
c7302d7484 Rearrange pdfs and images 2023-01-25 01:55:54 +04:00
syedmouaazfarrukh
6ab477df8d Add content to graphql (#3329)
* Adding content to 100-graphql-introduction

* Adding content to 101-graphql-queries

* Adding content to 102-mutations

* Adding content to 103-subscriptions

* Adding content to 108-frontend-implementation

* Adding content to 104-schema

* Adding content to 101-resolvers

* Adding content to 105-execution

* Adding content to 109-backend-implementations

* Adding content to 100-graphql-over-http

* Adding content to 101-graphql-over-websockets

* Adding content to 102-graphql-over-sse

* Adding content to 106-serving-over-internet

* Adding content to 104-validation, 107-pagination

* Adding content to graphql
2023-01-25 01:52:56 +04:00
Kamran Ahmed
961d00e70e Add system design roadmap link 2023-01-23 17:42:19 +04:00
syedmouaazfarrukh
c1a53cf3cc Add content to software-design-architecture (#3343)
* Adding content to 100-clean-code-principles

* Adding content to 101-programming-paradigms

* Adding content to 103-software-design-principles

* Adding content to 104-design-patterns

* Adding content to 105-architectural-principles

* Adding content to 100-primary-principles

* Adding content to 101-paradigm-features

* Adding content to 102-object-oriented-programming

* Adding content to 106-architectural-styles

* Adding content to 107-architectural-patterns

* Adding content to 108-enterprise-patterns

* Adding content to 108-enterprise-patterns

* Update src/roadmaps/software-design-architecture/content/100-clean-code-principles/101-be-consistent.md

* Update src/roadmaps/software-design-architecture/content/100-clean-code-principles/102-meaningful-names.md

* Update src/roadmaps/software-design-architecture/content/100-clean-code-principles/103-indentation-and-code-style.md

* Update src/roadmaps/software-design-architecture/content/100-clean-code-principles/104-keep-it-small.md

* Update src/roadmaps/software-design-architecture/content/100-clean-code-principles/105-pure-functions.md

* Update src/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/102-scope-visibility.md

* Update src/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/index.md

* Update src/roadmaps/software-design-architecture/content/102-object-oriented-programming/102-model-driven-design/100-domain-models.md

* Update src/roadmaps/software-design-architecture/content/103-software-design-principles/104-solid.md

* Update src/roadmaps/software-design-architecture/content/104-design-patterns/100-gof-design-patterns.md

* Update src/roadmaps/software-design-architecture/content/100-clean-code-principles/109-use-correct-constructs.md

* Update src/roadmaps/software-design-architecture/content/100-clean-code-principles/110-keep-tests-independent.md

* Update src/roadmaps/software-design-architecture/content/100-clean-code-principles/110-keep-tests-independent.md

* Update src/roadmaps/software-design-architecture/content/100-clean-code-principles/110-keep-tests-independent.md

* Update src/roadmaps/software-design-architecture/content/100-clean-code-principles/111-use-meaningful-names.md

* Update src/roadmaps/software-design-architecture/content/100-clean-code-principles/114-avoid-hasty-abstractions.md

* Update src/roadmaps/software-design-architecture/content/100-clean-code-principles/114-avoid-hasty-abstractions.md

* Update src/roadmaps/software-design-architecture/content/100-clean-code-principles/index.md

* Update src/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/101-concrete-classes.md

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-01-23 03:29:01 +04:00
github-actions[bot]
1f485c21f7 chore: update dependencies to latest (#3344)
Co-authored-by: kamranahmedse <kamranahmedse@users.noreply.github.com>
2023-01-23 02:48:35 +04:00
Amrou Bellalouna
e886d0bacb Fix typo in "avaiability" (#3346) 2023-01-23 02:47:26 +04:00
Kamran Ahmed
8a07f2f685 Add slack integration for aws-costs 2023-01-22 18:28:00 +04:00
Kamran Ahmed
19ad916334 Update action file 2023-01-22 17:11:50 +04:00
Kamran Ahmed
b30016b6f4 Add github action 2023-01-22 17:09:29 +04:00
Kamran Ahmed
57395f769a Make software design and architecture roadmap interacxtive 2023-01-21 18:11:51 +04:00
Kamran Ahmed
b91c11b273 Fix broken links 2023-01-21 03:50:39 +04:00
Kamran Ahmed
c026f9c928 Fix broken links 2023-01-21 01:10:57 +04:00
Kamran Ahmed
aee51ee43e Handle legacy roadmap urls 2023-01-20 21:13:38 +04:00
Kamran Ahmed
3b12130579 Handle legacy roadmap urls 2023-01-20 20:57:58 +04:00
Kamran Ahmed
3dd9429338 Handle legacy roadmap urls 2023-01-20 20:48:14 +04:00
Kamran Ahmed
0af54cd906 Fix broken URLs 2023-01-20 20:33:31 +04:00
Kamran Ahmed
750e6e5a36 Remove trailing slashes from the roadmap pages 2023-01-20 20:13:19 +04:00
Kamran Ahmed
5b93bc42db Remove trailing slashes from the website URLs 2023-01-20 20:10:21 +04:00
Kamran Ahmed
8b32a3a831 Rename featured roadmap item 2023-01-20 17:03:52 +04:00
Kamran Ahmed
a28204c908 Remove lastmod from sitemap 2023-01-20 16:47:58 +04:00
Benson Arafat
4aca07e3d4 Update Broken Link (#3308)
Update Callback broken link
2023-01-20 00:27:03 +04:00
Kamran Ahmed
5c2562dadb Add content to cloud design patterns 2023-01-19 22:10:12 +04:00
Kamran Ahmed
e934dc60f4 Add content for reliability patterns 2023-01-19 20:50:14 +04:00
Kamran Ahmed
ad4f35764d Add content to cloud design patterns 2023-01-19 20:46:19 +04:00
Kamran Ahmed
a715a85b46 Add disclaimer above cloud design patterns 2023-01-19 20:26:24 +04:00
Kamran Ahmed
f16a207e7c Add content for monitoring 2023-01-19 20:02:21 +04:00
Kamran Ahmed
6582d65935 Add content for performance antipatterns 2023-01-19 19:48:02 +04:00
Kamran Ahmed
ab36350cdc Add communication protocols 2023-01-19 19:25:22 +04:00
Kamran Ahmed
3b05a615d8 Add content to asynchronism 2023-01-19 19:04:58 +04:00
Kamran Ahmed
9a2bc75646 Add caching strategies 2023-01-19 18:54:30 +04:00
Kamran Ahmed
d283ce7c67 Add right click to mark as done/pending 2023-01-19 18:35:08 +04:00
Kamran Ahmed
59ed243fa7 Add content to system design roadmap 2023-01-19 17:58:10 +04:00
Kamran Ahmed
ca35551e4f Add content for consistency and background jobs 2023-01-19 17:16:26 +04:00
Kamran Ahmed
cab06b46da Add content to system design roadmap 2023-01-19 16:45:34 +04:00
Kamran Ahmed
f5e980d8ec Add functionality to add note to the roadmaps 2023-01-19 15:05:25 +04:00
Kamran Ahmed
6187b1dc52 Update isNew tags 2023-01-19 14:16:03 +04:00
syedmouaazfarrukh
a3b8b5653a Add content to system-design (#3323) 2023-01-19 14:10:10 +04:00
Kamran Ahmed
8f8e2f41d8 Rearrange JSON files 2023-01-18 19:47:47 +04:00
Kamran Ahmed
89a436a5b7 Add content for making API calls using http moduel 2023-01-18 17:00:04 +04:00
Zied Chekir
231e295f01 Add resource links to blockchain roadmap (#3317)
I would suggest those articles since it is an advanced subject. the first one explains the math behind zk-rollups and the second one is Vitalik ( Founder of Ethereum) explaining how snarks work.
2023-01-18 16:56:03 +04:00
Kamran Ahmed
64e20e9fc1 Add links to roadmaps from FAQs on the frontend roadmap 2023-01-18 16:19:21 +04:00
Kamran Ahmed
621f841fbf Add a guide about consistency patterns 2023-01-18 02:46:59 +04:00
Kamran Ahmed
c61afb15bc Add content in consistency patterns 2023-01-18 02:35:24 +04:00
RaifAR
595f3680be fix: typo in the word development (#3320)
Co-authored-by: Raif Abdul Razak <raif@Raifs-MacBook-Air.local>
2023-01-17 22:57:02 +04:00
Kamran Ahmed
ee65c56bf3 Add content to availability vs consistency 2023-01-17 20:25:06 +04:00
Kamran Ahmed
a2c339f2d5 Add system design roadmap content 2023-01-17 18:49:53 +04:00
Kamran Ahmed
a3031a2371 Add system design roadmap 2023-01-17 18:06:43 +04:00
Kamran Ahmed
952169ec8e Add AWS guide link 2023-01-16 19:53:25 +04:00
Kamran Ahmed
fbd82ce215 Remove pluralsight links 2023-01-15 15:37:16 +04:00
Kamran Ahmed
35f61e876e Fix broken URL 2023-01-15 15:36:19 +04:00
syedmouaazfarrukh
bb9878fdb7 Add content to aspnet-core roadmap (#3294)
* Initial commit

* Initial commit

* Initial commit

* Initial commit

* Initial commit

* Initial commit

* Initial commit

* Initial commit

* Initital commit

* Initial commit

* Initial commit

* Committing 107-databases

* Content added in aspnet-core/content/108-log-frameworks

* Content added in aspnet-core/content/109-api-clients

* Content added in aspnet-core/content/110-real-time-communication

* Content added in aspnet-core/content/111-object-mapping

* Content added in aspnet-core/content/112-task-scheduling

* Fix Eager Loading heading

* Fix lazy loading heading

* Update src/roadmaps/aspnet-core/content/104-orm/103-nhibernate.md

* Update src/roadmaps/aspnet-core/content/100-basics-of-csharp/101-dotnet.md

* Update src/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/101-rest.md

* Update src/roadmaps/aspnet-core/content/109-api-clients/102-graphql/100-graphql-dotnet.md

* Update src/roadmaps/aspnet-core/content/103-basics-of-aspnet-core/index.md

* Update src/roadmaps/aspnet-core/content/104-orm/100-entity-framework-core/102-change-tracker-api.md

* Update src/roadmaps/aspnet-core/content/104-orm/102-repodb.md

* Update src/roadmaps/aspnet-core/content/104-orm/102-repodb.md

* Update src/roadmaps/aspnet-core/content/105-dependency-injection/102-life-cycles/index.md

* Update src/roadmaps/aspnet-core/content/105-dependency-injection/index.md

* Update src/roadmaps/aspnet-core/content/109-api-clients/102-graphql/100-graphql-dotnet.md

* Update src/roadmaps/aspnet-core/content/109-api-clients/102-graphql/index.md

* Update src/roadmaps/aspnet-core/content/110-real-time-communication/101-singlar-core.md

* Update src/roadmaps/aspnet-core/content/111-object-mapping/100-atuo-mapper.md

* Update src/roadmaps/aspnet-core/content/107-databases/100-search-engines/100-elasticsearch.md

* Update src/roadmaps/aspnet-core/content/107-databases/102-relational/101-postgresql.md

* Update src/roadmaps/aspnet-core/content/107-databases/102-relational/103-mysql.md

* Update src/roadmaps/aspnet-core/content/107-databases/103-nosql/101-mongodb.md

* Update src/roadmaps/aspnet-core/content/108-log-frameworks/101-nlog.md

* Update src/roadmaps/aspnet-core/content/108-log-frameworks/100-serilog.md

* Update src/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/100-elk-stack.md

* Update src/roadmaps/aspnet-core/content/108-log-frameworks/102-log-management-system/104-elmah.md

* Update src/roadmaps/aspnet-core/content/108-log-frameworks/index.md

* Update src/roadmaps/aspnet-core/content/109-api-clients/100-rest/101-odata.md

* Update src/roadmaps/aspnet-core/content/109-api-clients/100-rest/index.md

* Update src/roadmaps/aspnet-core/content/109-api-clients/102-graphql/100-graphql-dotnet.md

* Update src/roadmaps/aspnet-core/content/109-api-clients/101-grpc.md

* Adding content to 115-ci-cd

* Adding content to 116-client-side-libraries

* Adding content to 117-template-engines

* Adding content to 118-good-to-know-libraries

* Adding content to 113-testing

* Adding content to 114-microservices

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-01-15 15:35:54 +04:00
Kamran Ahmed
ee843cc9e2 Add tests for roadmaps, guides and videos 2023-01-15 15:26:58 +04:00
Kamran Ahmed
cbd79ef299 Add tests for roadmap pages and homepage 2023-01-15 15:23:27 +04:00
Kamran Ahmed
af9e266190 Update dependencies 2023-01-15 15:01:34 +04:00
Kamran Ahmed
0cbd401071 Remove critters 2023-01-15 14:32:37 +04:00
kamranahmedse
0929d40bd0 chore: update dependencies to latest 2023-01-15 14:32:12 +04:00
Kamran Ahmed
927aa0a066 Update twitter URL 2023-01-14 18:14:01 +04:00
Kamran Ahmed
85eff7f894 Fix invalid faq schema 2023-01-14 12:11:16 +04:00
Kamran Ahmed
11695f4b05 Add json-ld schema to all roadmaps 2023-01-14 01:20:57 +04:00
Kamran Ahmed
aebee9b3a3 Add json-ld schema to the backend roadmap and refactor 2023-01-14 00:58:45 +04:00
Kamran Ahmed
6b52baf093 Add json-ld schema to the roadmap pages 2023-01-14 00:32:14 +04:00
Kamran Ahmed
6922fd826f Remove prism file 2023-01-13 15:48:26 +04:00
Kamran Ahmed
ec29e1836e Update configuration for colors 2023-01-13 14:49:59 +04:00
Kamran Ahmed
dca9eb32cd Remove prism file 2023-01-13 14:45:44 +04:00
Kamran Ahmed
4b681c6317 Add json-ld schema to frontend/backend roadmaps 2023-01-13 12:37:45 +04:00
Kamran Ahmed
9c24ff23e3 Guide code not showing proper bg 2023-01-12 19:12:26 +04:00
Kamran Ahmed
cdc87a99e1 Add ambassador eBook link 2023-01-12 18:48:11 +04:00
Kamran Ahmed
ea16e99598 Add ambassador eBook link 2023-01-12 18:46:49 +04:00
Kamran Ahmed
ba86e8a6b1 Update content headings 2023-01-12 14:41:54 +04:00
syedmouaazfarrukh
5f23d4c7eb Add content to Spring Boot roadmap (#3285)
* Initial commit

* Update content files

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-01-12 14:38:50 +04:00
Kamran Ahmed
8264c4509f Update canonicals 2023-01-11 22:28:41 +04:00
Kamran Ahmed
6c8aea98da Rename Software Design and Architecture Roadmap 2023-01-11 20:12:49 +04:00
Kamran Ahmed
64ccd02d53 Fix broken popup 2023-01-11 17:12:19 +04:00
Kamran Ahmed
f8c1c6278b Refactor HTML event handlers 2023-01-11 00:08:49 +04:00
Kamran Ahmed
4786265e04 Refactor event tracking implementation 2023-01-10 23:57:41 +04:00
Kamran Ahmed
8badf383b2 Responsiveness changes 2023-01-10 23:26:29 +04:00
Kamran Ahmed
c4406b7649 Add meta text below roadmap topic for contribution 2023-01-10 19:39:43 +04:00
Kamran Ahmed
1e878069bc Add free eBook link 2023-01-10 19:11:49 +04:00
Kamran Ahmed
8234de2b8c Fix capitalization of word 2023-01-10 18:35:57 +04:00
Kamran Ahmed
3466708ed4 Add FAQs to the backend roadmap 2023-01-10 18:33:19 +04:00
Kamran Ahmed
b440fd9787 Add Spring Boot terminology content 2023-01-10 16:47:56 +04:00
Kamran Ahmed
9bc73ab738 Update FAQs on frontend developer roadmap 2023-01-10 16:10:56 +04:00
Kamran Ahmed
91c16a5e32 Minor FAQ change 2023-01-10 15:49:52 +04:00
Kamran Ahmed
1768150fb1 Fix color of the code items 2023-01-10 15:42:03 +04:00
Kamran Ahmed
4a1374c978 Add FAQs to the frontend roadmap 2023-01-10 15:39:10 +04:00
Kamran Ahmed
43df31b312 Remove duplicate go roadmap 2023-01-10 11:28:16 +04:00
Kamran Ahmed
2037edb2da Add content for spring configuration 2023-01-10 03:22:03 +04:00
Kamran Ahmed
de8a4d4acf Add build script 2023-01-10 03:12:25 +04:00
Kamran Ahmed
a67a27299e Add functionality to create content directory for a roadmap 2023-01-10 03:11:51 +04:00
Kamran Ahmed
5d164198d4 Delete migration scripts and grouping on roadmap 2023-01-10 02:58:07 +04:00
Kamran Ahmed
a76b9d9ac0 Add roadmap link to PDFs page 2023-01-09 19:56:24 +04:00
Kamran Ahmed
6ed83349ba Add spring boot roadmap link 2023-01-09 19:55:01 +04:00
Kamran Ahmed
1b21550e48 Add spring boot roadmap pdf 2023-01-09 19:53:08 +04:00
Kamran Ahmed
c1d0ff7ea2 Add spring boot roadmap 2023-01-09 19:51:47 +04:00
Kamran Ahmed
26125fc6d7 Add software architect roadmap 2023-01-09 19:40:44 +04:00
Kamran Ahmed
aff7d8eece Add events to the subscription forms 2023-01-09 19:36:45 +04:00
Kamran Ahmed
fd939f198a Fix popup not working on roadmaps 2023-01-09 18:01:49 +04:00
Kamran Ahmed
18e4804a51 Add command to collect links from roadmaps 2023-01-09 15:37:10 +04:00
Sricharan Krishnan
ed8bf11150 Add resources for React (#3264)
* [Build] React Roadmap

Additional Suggestions for 103 Refs
1. Web Dev Simplied - a youtube video that explains the use of refs and what it can do for us
2. A content blog from 'Dmitri Pavlutin' website

* [Build] 104-React Events

I've added an additional description text in the main markdown file to help other learners/readers
keep in mind how important it is to make sure that we write code that is easy to understand. Do take
a look.

* Update src/roadmaps/react/content/103-rendering/104-events.md

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-01-09 14:02:22 +04:00
Fred Vasquez
61f088d42a Add content for GraphQL Introduction (#3268)
Adding introduction to topic and useful links.
2023-01-09 14:01:30 +04:00
Tilen Pogačnik
faee01b22d Fix: remove text highlight in links (#3273) 2023-01-09 14:00:52 +04:00
Kamran Ahmed
dc56ef6190 Remove broken link 2023-01-09 14:00:15 +04:00
Kamran Ahmed
f393a23994 Add script for upgrading dependencies 2023-01-09 13:59:34 +04:00
Kamran Ahmed
8e61330080 Rename sha to commitUrl 2023-01-08 06:48:51 +04:00
Kamran Ahmed
2c18529429 Add commit url meta attribute 2023-01-08 06:38:50 +04:00
Kamran Ahmed
88ff836bfb Fix canonicals 2023-01-08 06:29:38 +04:00
Kamran Ahmed
66cb4f9a06 Fix canonicals 2023-01-08 06:25:34 +04:00
Ansat
d9697b74fd fix: remove text highlight in links (#3265) 2023-01-08 00:16:21 +04:00
Kamran Ahmed
863b7fa08b Make signup page no-index 2023-01-07 13:45:31 +04:00
Kamran Ahmed
64078f9d1a Update homepage title 2023-01-07 13:44:10 +04:00
Kamran Ahmed
5f8ead3d2f Fix long titles, multiple headings and redirect links 2023-01-07 13:38:23 +04:00
Kamran Ahmed
cb16abc8e1 Add alt attributes to all images 2023-01-07 13:23:43 +04:00
Kamran Ahmed
52d00a0654 Add canonicals and fix og:url on all pages 2023-01-06 22:08:49 +04:00
Kamran Ahmed
d5495f7280 Reduce file sizes 2023-01-06 21:45:11 +04:00
Kamran Ahmed
564c9fdd4f Fix broken URLs 2023-01-06 21:42:58 +04:00
Kamran Ahmed
e75df0ef9e Fix broken roadmap URL 2023-01-06 21:41:13 +04:00
Kamran Ahmed
642cbbf6d3 Fix star count is displaying NaN 2023-01-06 18:51:13 +04:00
Hossein zare
032602ad3b Rename raywenderlich to Kodeco (#3243)
raywenderlich's team has changed their name to Kodeco.

https://www.kodeco.com/36641071-introducing-kodeco-the-new-raywenderlich-com
2023-01-06 15:54:36 +04:00
Benson Arafat
522f16957a Update content in Dart (#3244)
* Updated 100 Dart Basics 

Dart can also be used to build server and desktop applications.

* Updated 103 Functions

Explanation about dart functions
2023-01-06 15:52:59 +04:00
Sricharan Krishnan
1f3bf761cd Add resources for React (#3245)
* [Build] React Roadmap

1. Came across two other interesting topics related to props and state in react
2. Would like to suggest that we add these to the list as well as they highlight something important
3. One is from robinwieruch and the other from Dominik Dorfmeister (TkDodo)

* [Build] React Roadmap Contributions

1. Added one topic for Composition vs Inheritance
2. Added topics for Props vs State
3. Added topic for Render Props
2023-01-06 15:52:32 +04:00
Haril Song
f76f0ea1a6 Fix typo in gRPC (#3248) 2023-01-06 15:48:48 +04:00
Kamran Ahmed
a40457edc8 Rename README.md to readme.md 2023-01-05 21:15:41 +04:00
Kamran Ahmed
076db6dd0a Fix broken image link 2023-01-05 20:24:51 +04:00
Kamran Ahmed
d2b5e17ea2 Merge branch 'astro'
Migrarte to Astro and Tailwind
2023-01-05 20:01:16 +04:00
Kamran Ahmed
3f027cbebb Remove everything 2023-01-05 20:01:04 +04:00
Kamran Ahmed
bd68dd4ab6 Add sponsor to devops roadmap 2023-01-05 19:45:43 +04:00
Kamran Ahmed
f681a0ab8a Update og image 2023-01-05 19:28:39 +04:00
Kamran Ahmed
fbdf3a6942 Compress roadmaps JSONs 2023-01-05 19:27:35 +04:00
Kamran Ahmed
af27626a1c Add compress HTML 2023-01-05 19:24:42 +04:00
Kamran Ahmed
86a1a4a078 Update meta files and enable noIndex flag 2023-01-05 17:31:47 +04:00
Kamran Ahmed
44c908eca1 Add upcoming roadmaps 2023-01-05 12:23:07 +04:00
Kamran Ahmed
6ee7e4873f Update links to have trailing slash 2023-01-05 12:04:38 +04:00
Kamran Ahmed
313e584711 Fix opensource star count shoing NaN 2023-01-05 04:27:50 +04:00
Kamran Ahmed
58315932be Remove critters 2023-01-05 04:10:25 +04:00
Kamran Ahmed
20cbf7b432 Fix broken styles 2023-01-05 03:34:11 +04:00
Kamran Ahmed
0159292df2 Fix broken SVGs 2023-01-05 03:17:36 +04:00
Kamran Ahmed
f5c4ff59a7 Compress the iamges 2023-01-05 03:06:24 +04:00
Kamran Ahmed
bd9e2876e3 Add PDFs listing page 2023-01-04 21:32:30 +04:00
Kamran Ahmed
292d15ff19 Add .nojekyll and CNAME handling 2023-01-04 21:21:58 +04:00
Kamran Ahmed
b4ffb0e58e Move analytics to footer 2023-01-04 21:10:28 +04:00
Kamran Ahmed
0f698b3647 Add event tracking 2023-01-04 21:05:11 +04:00
Kamran Ahmed
75e840e26b Add deploy script 2023-01-04 20:48:10 +04:00
Kamran Ahmed
b7544a5c44 Update github workflows 2023-01-04 20:21:33 +04:00
Kamran Ahmed
f268ca934a Update readme 2023-01-04 20:17:40 +04:00
Kamran Ahmed
5dfd43b1e4 Update android roadmap 2023-01-04 20:16:09 +04:00
Kamran Ahmed
4e44595948 Add TNS banner 2023-01-04 20:08:53 +04:00
Kamran Ahmed
a178eac1bb Fix 404 page squeezed heading 2023-01-04 19:39:23 +04:00
Kamran Ahmed
a6855d5c48 Resync changes from roadmap.sh 2023-01-04 19:27:31 +04:00
Kamran Ahmed
631baffb17 Fix language on markdown 2023-01-04 19:25:57 +04:00
Kamran Ahmed
ff496462d5 Fix broken build 2023-01-04 19:19:22 +04:00
Victor Jørgensen
4714e8c486 Update 101-acid.md (#3065)
The current text says that ACID are the for properties of _any_ database system. This is only true for relational databases. NoSQL databases can possess _some_ of these properties, but are due to their nature not ACID compliant.
2023-01-04 18:57:57 +04:00
Clément Le Bas
517c6c6383 Add widgets content 2023-01-04 18:56:42 +04:00
Siddarth Singh
3db55febb6 Add git content and resources (#3074)
* Update 100-git.md

Added Git introduction and useful links.

* Update content/roadmaps/117-flutter/content/104-version-control-systems/100-git.md

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-01-04 18:56:26 +04:00
Justine Ang
20b7e5e6c8 Add a resource for python (#3077)
Personally, this was a very helpful class/tutorial. It helps me a lot when I started Python.

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-01-04 18:54:51 +04:00
pfemi26
b176eb3108 Add content for Code First Migrations (#3080)
* Update 101-codefirst-migrations.md

* Update content/roadmaps/116-aspnet-core/content/104-orm/100-entity-framework-core/101-codefirst-migrations.md

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-01-04 18:53:58 +04:00
vrushali-d
daec505876 Add ubuntu resource (#3088)
Added reference for book The Linux Command Line by William Shotts.
It is an excellent book for learning Linux commands
2023-01-04 18:51:35 +04:00
Yuriy Vorobyov
4a7cdd6da2 Add content for AssertionErrors (#3090)
* Update Node.js roadmap Assertion Errors

Updated Assertion Errors block with some useful links and description

* Update content/roadmaps/107-nodejs/content/103-nodejs-error-handling/103-error-types/103-assertion-errors.md

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-01-04 18:48:48 +04:00
payal pagariya
3f31e3889b Add a resource for DNS (#3096)
* Update 103-dns-and-how-it-works.md

Addition resources added to understand Domain Names

* Update content/roadmaps/101-backend/content/100-internet/103-dns-and-how-it-works.md

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-01-04 18:47:09 +04:00
Yogesh Vernekar
c5ca9f0373 Fix angular resource typo (#3101)
* fixed typo in router outlets and added some content to router links

* syntax update

* Update content/roadmaps/104-angular/content/107-routing/102-router-links.md

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-01-04 18:45:43 +04:00
Yanis B
f9938d5e0c Fix typo in the javascript content (#3103)
"There are eight basic data types in JavaScript" is ambiguous (are objects considered "basic" ?).
Javascript features seven (7) primitive datatypes and all objects are non-primitives.
Source (MDN) : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures
2023-01-04 18:44:11 +04:00
Heru Purnama
01437af3bb Add XCUI testing resources (#3115)
Update tutorial Xcuitest end to end testing with example video
2023-01-04 18:43:09 +04:00
The New Stack
671d7085a6 Add resource for python data types (#3120)
* Update 101-variables-and-datatypes.md

* Update content/roadmaps/108-python/content/100-python-basics/101-variables-and-datatypes.md

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-01-04 18:41:30 +04:00
The New Stack
fdd9ec17df Add resource for lists and tuplies (#3122) 2023-01-04 18:40:33 +04:00
The New Stack
0b5eafa13d Add resource to testing (#3125) 2023-01-04 18:38:55 +04:00
The New Stack
ec6d045752 Add python resource (#3127) 2023-01-04 18:37:57 +04:00
Archit Sharma
78438b1bc4 Add resources to C# roadmap (#3130)
* Resources added for Database fundamental node

* Resources added for Caching node
2023-01-04 18:37:34 +04:00
Yuriy Vorobyov
103065d852 Add content for errors (#3135) 2023-01-04 18:37:10 +04:00
Daniel Pomajbík
2c2a24e6f0 Fixing typo in DOM section (#3138)
Treee -> Tree
2023-01-04 18:36:37 +04:00
diazan6
72af46ffe2 Update 100-arrays-linked-lists.md (#3150)
Removed link that leads to error (broken link)
2023-01-04 18:34:49 +04:00
HS
fc8e635961 Fix typo in Resource (#3151) 2023-01-04 18:34:38 +04:00
Laud Gilbert
88034df44d Defining Version Control Systems (#3157)
* Update readme.md

Definition and examples of Version Control Systems.

* Update content/roadmaps/117-flutter/content/104-version-control-systems/readme.md

* Update content/roadmaps/117-flutter/content/104-version-control-systems/readme.md

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-01-04 18:30:56 +04:00
Salman Sayyed
2076d48150 Fix a link to an article (#3158)
Fix for free reading resource "What is Infrastructure as Code (IaC)?"
2023-01-04 18:30:02 +04:00
Fred Vasquez
b64d360ebc Add dapper docs (#3162)
* Update 101-dapper.md

Adding introduction and useful links.

* Update content/roadmaps/116-aspnet-core/content/104-orm/101-dapper.md

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-01-04 18:29:38 +04:00
Anish Subedi
958cfb15ba Remove duplicate resource lin (#3164) 2023-01-04 18:28:36 +04:00
phucdaivo
c172c0b926 Fix link (#3170)
change value attr href
2023-01-04 18:26:15 +04:00
Ata Emir Kaba
ac115c266d Update SQL Server Section (#3175)
* Update SQL Server Section

* Update content/roadmaps/116-aspnet-core/content/107-databases/102-relational/100-sql-server.md

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-01-04 18:24:40 +04:00
Ali
6de156bcaa Added resources for html (#3187) 2023-01-04 18:23:28 +04:00
Ali
9383ec0f75 Added resources for CSS basics. (#3188) 2023-01-04 18:23:13 +04:00
Marcus Vinicius Gomes
87ed84fa45 Add render objects docs (#3192) 2023-01-04 18:22:24 +04:00
Dhanush G
0cd34240b7 Add content for playstore (#3201)
* Update 101-playstore.md

Added links to guides on publishing flutter app to playstore.

* Update content/roadmaps/117-flutter/content/119-deployment/101-playstore.md

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-01-04 18:21:18 +04:00
Daniel Tinsley
377cb10177 Fix typos in the android roadmap (#3202)
I capitalized any product names that were incorrectly in lowercase. I also fixed any grammar, punctuation, and writing mechanics issues that I noticed.
2023-01-04 18:20:02 +04:00
nikartik
2198bbd484 Added python tutorial link (#3206)
Added W3Schools python tutorial link as a read free resource
2023-01-04 18:18:07 +04:00
dawgaw
a5b00c71ed Fix Node.js link (#3210) 2023-01-04 18:17:15 +04:00
dawgaw
a05df16d1d Fix typo in link (#3211) 2023-01-04 18:16:51 +04:00
dawgaw
1d52bec76f Update JavaScript resources (#3212) 2023-01-04 18:15:42 +04:00
DelsV
86353d6ca2 Add python resource 2023-01-04 18:14:55 +04:00
payal pagariya
47a5366d08 Additional resources for tree and graph algorithms (#3216)
* Additional resources for tree and graph algorithms 

Additional resources for tree and graph algorithms for technical interviews

* Update content/roadmaps/106-javascript/content/104-javascript-data-structures/readme.md

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2023-01-04 18:12:17 +04:00
Yves Molina
2ac46664e1 Fix typo in observer pattern (#3223) 2023-01-04 18:10:31 +04:00
Siva Naik
f06a2ed6a5 Add rust content (#3225) 2023-01-04 18:09:48 +04:00
Kamran Ahmed
a2aff51deb Add sitemap generation 2023-01-04 18:08:47 +04:00
Kamran Ahmed
baa7adffb6 Update site-wide year 2023-01-04 17:22:03 +04:00
Kamran Ahmed
abbc661858 Add sitemap and 404 page 2023-01-04 17:17:23 +04:00
Kamran Ahmed
f4cf194638 Refactor captcha validation 2023-01-04 13:08:35 +04:00
Kamran Ahmed
2ac1781118 Fix text language 2023-01-04 12:57:27 +04:00
Kamran Ahmed
f5adabcdc2 Remove package-lock.json 2023-01-04 12:44:46 +04:00
Kamran Ahmed
b90c6d8569 Fix aria attribute 2023-01-04 12:38:00 +04:00
Kamran Ahmed
8120a544bf Optimize JS for navigation and captcha 2023-01-04 00:42:03 +04:00
Kamran Ahmed
d512bbf95d Remove dangling console.log 2023-01-04 00:18:06 +04:00
Kamran Ahmed
f33ae82298 Add ga events tracking 2023-01-04 00:13:33 +04:00
Kamran Ahmed
c359aefdac Add GA tracking 2023-01-03 21:02:25 +04:00
Kamran Ahmed
9dbb2d05c9 Remove topic pages and upcoming roadmaps from index 2023-01-03 20:43:25 +04:00
Kamran Ahmed
05db7c3a15 Fix invalid language in markdown attribute 2023-01-03 20:32:16 +04:00
Kamran Ahmed
d1445d6c7c Add SEO configuration for all the pages 2023-01-03 20:31:41 +04:00
Kamran Ahmed
64edd70ec4 Update header and manifest icons 2023-01-03 20:09:54 +04:00
Kamran Ahmed
822fb8ad05 Update og attributes 2023-01-03 19:59:54 +04:00
Kamran Ahmed
f9f6cb8ae7 Updae og:image for the roadmapg 2023-01-03 19:30:37 +04:00
Kamran Ahmed
6015217cde Updae og:image for the roadmapg 2023-01-03 19:26:48 +04:00
Kamran Ahmed
ff860a5c0f Update twitter image 2023-01-03 19:19:04 +04:00
Kamran Ahmed
d7b201c7f7 Enable captcha and refactor popup 2023-01-03 18:30:56 +04:00
Kamran Ahmed
577613132b Disable captcha for nowg 2023-01-03 18:17:12 +04:00
Kamran Ahmed
00c118dc67 Add captcha on forms 2023-01-03 18:09:56 +04:00
Kamran Ahmed
bb2cc12ed0 Refactor navigation 2023-01-03 17:38:46 +04:00
Kamran Ahmed
b34376ce3e Make navigation interactive 2023-01-03 17:08:14 +04:00
Kamran Ahmed
9f4ffa211e Add sponsor 2023-01-03 17:04:13 +04:00
Kamran Ahmed
4f9153fdb3 Add terms and privacy pages and sponsor 2023-01-03 15:34:12 +04:00
Kamran Ahmed
7a5068419c Add about page 2023-01-03 00:35:22 +04:00
Kamran Ahmed
b30f7d2e96 Add about page 2023-01-03 00:33:08 +04:00
Kamran Ahmed
40ddeef742 Hardcode the number of stars on dev 2023-01-03 00:28:53 +04:00
Kamran Ahmed
c1e8c0361b Add footer to all pages 2023-01-03 00:22:50 +04:00
Kamran Ahmed
3613916570 Add star count 2023-01-02 23:18:20 +04:00
Kamran Ahmed
5b4ed23946 Fix Search Topics shown on all roadmaps 2023-01-02 23:06:37 +04:00
Kamran Ahmed
9144002b89 Add topic search interactivity 2023-01-02 20:48:46 +04:00
Kamran Ahmed
303dbcbd7d Add signup page 2023-01-02 20:43:41 +04:00
Kamran Ahmed
0e45a409da Fix broken videos page 2023-01-02 20:39:51 +04:00
Kamran Ahmed
280c2b8623 Add video detail page 2023-01-02 20:36:04 +04:00
Kamran Ahmed
cbc53a66d8 Add video listing on homepage 2023-01-02 20:34:03 +04:00
Kamran Ahmed
9e010f10b9 Add video migration 2023-01-02 20:26:15 +04:00
Kamran Ahmed
6216c3051e Add guide detail page 2023-01-02 20:23:53 +04:00
Kamran Ahmed
de53dcf02d Add featured guides on homepage 2023-01-02 19:58:46 +04:00
Kamran Ahmed
9b74a5fa62 Guides listing page 2023-01-02 19:52:04 +04:00
Kamran Ahmed
274060a08f Add guides migration 2023-01-02 19:00:26 +04:00
Kamran Ahmed
29dbc0a968 Add featured roadmaps on homepage 2023-01-02 18:48:38 +04:00
Kamran Ahmed
796f66698b Add roadmaps page 2023-01-02 18:38:06 +04:00
Kamran Ahmed
726b9e6d66 Add roadmaps listing page 2023-01-02 18:14:45 +04:00
Kamran Ahmed
b176d2c23e Roadmap filtering by tags 2023-01-02 18:09:13 +04:00
Kamran Ahmed
32761b5587 Topics listing page 2023-01-02 17:48:02 +04:00
Kamran Ahmed
6f337f6b53 Add topics listing page 2023-01-02 14:59:33 +04:00
Kamran Ahmed
6d68542f25 Refactor markdown styles 2023-01-02 14:10:42 +04:00
Kamran Ahmed
cb08ead276 Run sync-content 2023-01-02 04:47:46 +04:00
Kamran Ahmed
e9e68d1361 Delete artifacts from history 2023-01-02 04:45:13 +04:00
Kamran Ahmed
b1feefe2da Delete artifacts from history 2023-01-02 04:44:52 +04:00
Kamran Ahmed
30aef56202 Delete artifacts from history 2023-01-02 04:44:20 +04:00
Kamran Ahmed
e002e3c478 Add breadcrumbs and roadmap banner 2023-01-01 21:12:08 +04:00
Kamran Ahmed
9492c61955 Refactor and add topic population 2023-01-01 20:53:51 +04:00
Kamran Ahmed
0ad672f042 Fix missing heading 2023-01-01 19:59:59 +04:00
Kamran Ahmed
50b0309590 Handle external links in markdown 2023-01-01 18:59:38 +04:00
Kamran Ahmed
bc13c3bdad Add resource paragraph before links 2023-01-01 18:38:20 +04:00
Kamran Ahmed
fed1803243 Add resource paragraph before links 2023-01-01 18:38:15 +04:00
Kamran Ahmed
02883e50f0 Migrate old roadmaps 2023-01-01 18:16:35 +04:00
Kamran Ahmed
f9911b6597 Add content migration script 2023-01-01 18:06:28 +04:00
Kamran Ahmed
16ebf98164 Add roadmap migrator command 2023-01-01 17:52:52 +04:00
Kamran Ahmed
451c36dca4 Add topics page 2023-01-01 16:39:21 +04:00
Kamran Ahmed
274eeece7a Add markdown roadmap support 2022-12-31 20:37:14 +04:00
Kamran Ahmed
358c1440d8 Fix broken build 2022-12-31 20:20:38 +04:00
Kamran Ahmed
362588cf1b Add all roadmaps and their content 2022-12-31 20:14:48 +04:00
Kamran Ahmed
228aea0b1a Add download and subscribe popups 2022-12-31 20:10:12 +04:00
Kamran Ahmed
03da0ef24d Add topic overlay component 2022-12-31 19:56:34 +04:00
Kamran Ahmed
0932f36953 Add share icons 2022-12-31 19:42:00 +04:00
Kamran Ahmed
10883454f5 Add rendering of SVG roadmaps 2022-12-31 19:39:35 +04:00
Kamran Ahmed
45a7aad669 Add roadmap header and components 2022-12-31 18:54:22 +04:00
Kamran Ahmed
a5874bd057 Add roadmap rendering 2022-12-31 18:21:51 +04:00
Kamran Ahmed
16f48a1958 Initial commit 2022-12-31 17:01:40 +04:00
Kamran Ahmed
e0685ea2ea Add CSS Modules and RTK Query 2022-12-31 01:52:40 +04:00
Kamran Ahmed
e4b182f499 Update python roadmap image and pdf 2022-12-30 20:16:07 +04:00
Kamran Ahmed
9614eb2dc2 Add list comrpehensions, paradigms and expressions 2022-12-30 20:08:09 +04:00
Kamran Ahmed
f127d9a591 Update python roadmap year 2022-12-30 19:11:50 +04:00
Kamran Ahmed
ab8b6a1125 Add note, conda, and rearrange some items 2022-12-30 19:11:24 +04:00
Kamran Ahmed
abb9209577 Fix CLS on the updated roadmaps 2023 2022-12-28 20:15:10 +04:00
Kamran Ahmed
16bc596f23 Update react roadmap image and PDFs 2022-12-28 19:59:57 +04:00
Kamran Ahmed
0e71019feb Update react roadmap 2022-12-28 19:59:57 +04:00
Kamran Ahmed
96dd4ab4a1 Update react roadmap 2022-12-28 19:59:57 +04:00
Fred Vasquez
7d53de587b Update websockets content (#3183)
* Update 101-web-sockets.md

Adding simple introduction and useful links.

* Update websockets link

Co-authored-by: Kamran Ahmed <kamranahmed.se@gmail.com>
2022-12-27 18:13:32 +04:00
Shantanu Pade
b5ae4b3522 Fix broken event loop link 2022-12-27 18:10:47 +04:00
7150 changed files with 361004 additions and 163129 deletions

3
.env.example Normal file
View File

@@ -0,0 +1,3 @@
PUBLIC_API_URL=https://api.roadmap.sh
PUBLIC_AVATAR_BASE_URL=https://dodrc8eu8m09s.cloudfront.net/avatars
PUBLIC_EDITOR_APP_URL=https://draw.roadmap.sh

View File

@@ -1,18 +0,0 @@
{
"extends": [
"next",
"next/core-web-vitals",
"prettier"
],
"rules": {
"@next/next/no-img-element": [
"off"
],
"react/display-name": [
"off"
],
"react/jsx-no-target-blank": [
"off"
]
}
}

View File

@@ -0,0 +1,25 @@
name: "✍️ Suggest Changes"
description: Help us improve the roadmaps by suggesting changes
labels: [suggestion]
assignees: []
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to help us improve the roadmaps with your suggestions.
- type: input
id: url
attributes:
label: Roadmap URL
description: Please provide the URL of the roadmap you are suggesting changes to.
placeholder: https://roadmap.sh
validations:
required: true
- type: textarea
id: roadmap-suggestions
attributes:
label: Suggestions
description: What changes would you like to suggest?
placeholder: Enter your suggestions here.
validations:
required: true

View File

@@ -0,0 +1,42 @@
name: "🐛 Bug Report"
description: Report an issue or possible bug
labels: [bug]
assignees: []
body:
- type: input
id: url
attributes:
label: What is the URL where the issue is happening
placeholder: https://roadmap.sh
validations:
required: true
- type: dropdown
id: browsers
attributes:
label: What browsers are you seeing the problem on?
multiple: true
options:
- Firefox
- Chrome
- Safari
- Microsoft Edge
- Other
- type: textarea
id: bug-description
attributes:
label: Describe the Bug
description: A clear and concise description of what the bug is.
validations:
required: true
- type: textarea
id: logs
attributes:
label: Output from browser console (if any)
description: Please copy and paste any relevant log output.
- type: checkboxes
id: will-pr
attributes:
label: Participation
options:
- label: I am willing to submit a pull request for this issue.
required: false

View File

@@ -0,0 +1,12 @@
name: "✨ Feature Suggestion"
description: Is there a feature you'd like to see on Roadmap.sh? Let us know!
labels: [feature request]
assignees: []
body:
- type: textarea
id: feature-description
attributes:
label: Feature Description
description: Please provide a detailed description of the feature you are suggesting and how it would help you/others.
validations:
required: true

View File

@@ -0,0 +1,25 @@
name: "🙏 Submit a Roadmap"
description: Help us launch a new roadmap with your expertise.
labels: [roadmap contribution]
assignees: []
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to submit a roadmap! Please fill out the information below and we'll get back to you as soon as we can.
- type: input
id: roadmap-title
attributes:
label: What is the title of the roadmap you are submitting?
placeholder: e.g. Roadmap to learn Data Science
validations:
required: true
- type: textarea
id: roadmap-description
attributes:
label: Roadmap Link
description: Please create the roadmap [using our roadmap editor](https://twitter.com/kamrify/status/1708293162693767426) and submit the roadmap link.
placeholder: |
https://roadmap.sh/xyz
validations:
required: true

View File

@@ -0,0 +1,12 @@
name: "🤷‍♂️ Something else"
description: If none of the above templates fit your needs, please use this template to submit your issue.
labels: []
assignees: []
body:
- type: textarea
id: issue-description
attributes:
label: Detailed Description
description: Please provide a detailed description of the issue.
validations:
required: true

14
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,14 @@
blank_issues_enabled: false
contact_links:
- name: Roadmap Request
url: https://discord.gg/cJpEt5Qbwa
about: Please do not open issues with roadmap requests, hop onto the discord server for that.
- name: 📝 Typo or Grammatical Mistake
url: https://github.com/kamranahmedse/developer-roadmap/tree/master/src/data
about: Please submit a pull request instead of reporting it as an issue.
- name: 💬 Chat on Discord
url: https://discord.gg/cJpEt5Qbwa
about: Join the community on our Discord server.
- name: 🤝 Guidance
url: https://discord.gg/cJpEt5Qbwa
about: Join the community in our Discord server.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

View File

@@ -1 +0,0 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 3473 1069"><defs><style>.cls-1{fill:#fff;}.cls-2{fill:#111;}.cls-3{fill-rule:evenodd;fill:url(#linear-gradient);}</style><linearGradient id="linear-gradient" x1="658.73" y1="777.7" x2="341.45" y2="352.06" gradientTransform="matrix(1, 0, 0, -1, 0, 1070)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#33a9ff"/><stop offset="1" stop-color="#1673ff"/></linearGradient></defs><rect class="cls-1" width="3473" height="1069"/><path class="cls-2" d="M1054.06,633.32q4.93.45,11.23.9H1081q52.55,0,77.7-26.5,25.59-26.49,25.59-73.18,0-48.94-24.25-74.09t-76.79-25.14q-7.18,0-14.82.45-5.78,0-11,.51a3.73,3.73,0,0,0-3.33,3.74Zm202.54-98.78Q1256.6,575,1244,605t-35.92,49.84q-22.9,19.75-56.14,29.63t-74.55,9.88q-18.86,0-44-1.79A338.32,338.32,0,0,1,984,686.3V386.41a3.8,3.8,0,0,1,3.13-3.75,386.34,386.34,0,0,1,47.17-5.27q26.49-1.8,45.36-1.8,40,0,72.3,9,32.79,9,56.14,28.29T1244,462.25Q1256.61,492.33,1256.6,534.54Z"/><path class="cls-2" d="M1397.52,534.54q0,22.89,5.39,41.31a103.13,103.13,0,0,0,16.17,31.87,74.66,74.66,0,0,0,26.05,20.21q15.27,7.19,35,7.18,19.3,0,34.58-7.18a69.47,69.47,0,0,0,26-20.21A91.41,91.41,0,0,0,1557,575.85q5.83-18.42,5.84-41.31T1557,493.23q-5.39-18.86-16.17-31.88a67.73,67.73,0,0,0-26-20.65q-15.27-7.18-34.58-7.19-19.77,0-35,7.64a72.5,72.5,0,0,0-26.05,20.65q-10.33,13-16.17,31.88A145.23,145.23,0,0,0,1397.52,534.54Zm237.57,0q0,40-12.12,70.49-11.68,30.09-32.34,50.74a134.89,134.89,0,0,1-49.4,30.53,176.88,176.88,0,0,1-61.07,10.33A174.23,174.23,0,0,1,1420,686.3a140,140,0,0,1-49.4-30.53q-21.11-20.65-33.23-50.74-12.13-30.53-12.13-70.49t12.58-70q12.57-30.53,33.68-51.18a142,142,0,0,1,49.4-31A171.39,171.39,0,0,1,1480.16,372a174.08,174.08,0,0,1,60.18,10.33,136.87,136.87,0,0,1,49.4,31q21.1,20.65,33.23,51.18Q1635.09,494.58,1635.09,534.54Z"/><path class="cls-2" d="M1810.48,375.59q69.62,0,106.88,24.7,37.28,24.24,37.28,79.92,0,56.13-37.72,81.27-37.73,24.69-107.79,24.69H1791a3.83,3.83,0,0,0-3.83,3.83v96.51a3.83,3.83,0,0,1-3.83,3.83h-66.23V386.83a3.81,3.81,0,0,1,3.1-3.75,400.76,400.76,0,0,1,45.4-5.69Q1791.18,375.59,1810.48,375.59Zm4.49,59.72q-7.63,0-15.27.45-5,.3-9.06.62a3.8,3.8,0,0,0-3.51,3.8v86.28h22q36.38,0,54.79-9.88t18.42-36.82q0-13-4.94-21.55a32.47,32.47,0,0,0-13.48-13.47q-8.54-5.39-21.1-7.19A159.75,159.75,0,0,0,1815,435.31Z"/><path class="cls-2" d="M2123.07,375.59q69.61,0,106.89,24.7,37.27,24.24,37.27,79.92,0,56.13-37.72,81.27-37.73,24.69-107.78,24.69h-18.18a3.83,3.83,0,0,0-3.83,3.83v96.51a3.83,3.83,0,0,1-3.83,3.83h-66.23V386.82a3.8,3.8,0,0,1,3.1-3.74,400.76,400.76,0,0,1,45.4-5.69Q2103.77,375.59,2123.07,375.59Zm4.49,59.72q-7.64,0-15.27.45-5,.3-9.06.62a3.81,3.81,0,0,0-3.51,3.8v86.28h22q36.38,0,54.78-9.88t18.42-36.82q0-13-4.94-21.55a32.47,32.47,0,0,0-13.48-13.47q-8.52-5.39-21.1-7.19A159.75,159.75,0,0,0,2127.56,435.31Z"/><path class="cls-2" d="M2540.5,630.17a1.29,1.29,0,0,1,1.28,1.28v57.62a1.28,1.28,0,0,1-1.28,1.27H2342.25V401.41a3.83,3.83,0,0,1,2.81-3.69l67.25-18.54v251Z"/><path class="cls-2" d="M2618.88,690.34V383a3.84,3.84,0,0,1,3.83-3.83h215a1.28,1.28,0,0,1,1.23,1.64l-16.44,56.26a1.26,1.26,0,0,1-1.22.92H2692.77a3.83,3.83,0,0,0-3.83,3.83v57.24H2803.1a1.27,1.27,0,0,1,1.23,1.63l-16,54.92a1.28,1.28,0,0,1-1.22.92h-94.34a3.82,3.82,0,0,0-3.83,3.83v71.15h154.72a1.28,1.28,0,0,1,1.23,1.63l-16.34,56.27a1.27,1.27,0,0,1-1.22.92Z"/><path class="cls-2" d="M3006,375.59q70.07,0,107.34,25.15,37.28,24.69,37.27,77.22,0,32.79-15.27,53.44-14.82,20.19-43.11,31.87,9.43,11.68,19.76,26.94,10.34,14.82,20.21,31.43,10.32,16.17,19.76,34.13,8.93,16.58,16.65,32.75a1.28,1.28,0,0,1-1.16,1.82H3091.6a1.27,1.27,0,0,1-1.11-.65q-8.37-15-17.15-30.33-8.53-15.72-18-30.53-9-14.82-18-27.84a286.92,286.92,0,0,0-18-24.25h-30.76a3.83,3.83,0,0,0-3.82,3.83V686.51a3.83,3.83,0,0,1-3.83,3.83h-66.23V386.82a3.8,3.8,0,0,1,3.09-3.74,400,400,0,0,1,44.06-5.69Q2986.67,375.59,3006,375.59Zm4.05,59.72q-7.64,0-13.93.45-4,.3-7.71.61a3.82,3.82,0,0,0-3.51,3.81v80.89h19.76q39.51,0,56.58-9.88t17.07-33.67q0-22.9-17.52-32.33Q3043.71,435.31,3010,435.31Z"/><path class="cls-3" d="M307.26,310a1.79,1.79,0,0,0-1.5,2.75l89.7,140.38a14.19,14.19,0,0,0,12,6.58H528.38c39.92,0,64.87,35.28,64.72,74.79s-26.74,74.44-64.72,74.44H404.77a4.71,4.71,0,0,0-4.71,4.75V754.25a4.72,4.72,0,0,0,4.72,4.75H560.62C689.12,759,753,637.1,753.09,534.5S690,310,560.62,310ZM367,609.29H336.16C318.4,609.29,304,626,304,646.71V757.66a1.28,1.28,0,0,0,1.28,1.28h30.88c17.76,0,32.15-16.75,32.15-37.41v-111A1.27,1.27,0,0,0,367,609.29Z"/></svg>

Before

Width:  |  Height:  |  Size: 4.4 KiB

View File

@@ -1,59 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 646.6 105.7" style="enable-background:new 0 0 646.6 105.7;" xml:space="preserve">
<style type="text/css">
.st0{fill:#104366;}
.st1{fill:#4086C6;}
</style>
<g>
<path class="st0" d="M21.1,79.8c-6.6-3.5-11.7-8.4-15.5-14.6C1.9,59,0,52,0,44.3c0-7.8,1.9-14.7,5.6-20.9
c3.7-6.2,8.9-11.1,15.5-14.6c6.6-3.5,14-5.3,22.2-5.3c8.2,0,15.6,1.8,22.1,5.3c6.6,3.5,11.7,8.4,15.5,14.6
c3.8,6.2,5.6,13.2,5.6,20.9c0,7.8-1.9,14.7-5.6,20.9c-3.8,6.2-8.9,11.1-15.5,14.6c-6.5,3.5-13.9,5.3-22.1,5.3
C35,85.1,27.6,83.4,21.1,79.8z M55.9,66.3c3.8-2.1,6.7-5.1,8.9-9c2.1-3.8,3.2-8.2,3.2-13.1c0-4.9-1.1-9.3-3.2-13.1
c-2.1-3.8-5.1-6.8-8.9-9c-3.8-2.1-8-3.2-12.6-3.2c-4.7,0-8.9,1.1-12.6,3.2s-6.7,5.1-8.9,9c-2.1,3.8-3.2,8.2-3.2,13.1
c0,4.9,1.1,9.3,3.2,13.1c2.1,3.8,5.1,6.8,8.9,9c3.8,2.1,8,3.2,12.6,3.2C47.9,69.5,52.1,68.5,55.9,66.3z"/>
<path class="st0" d="M108.1,82.6c-5.8-1.7-10.5-3.9-14.1-6.6l6.2-13.8c3.4,2.5,7.4,4.5,12.1,6c4.7,1.5,9.3,2.3,14,2.3
c5.2,0,9-0.8,11.5-2.3c2.5-1.5,3.7-3.6,3.7-6.2c0-1.9-0.7-3.4-2.2-4.7c-1.5-1.2-3.3-2.2-5.6-3c-2.3-0.8-5.4-1.6-9.3-2.5
c-6-1.4-11-2.9-14.8-4.3c-3.8-1.4-7.1-3.7-9.9-6.9c-2.7-3.2-4.1-7.4-4.1-12.6c0-4.6,1.2-8.7,3.7-12.5c2.5-3.7,6.2-6.7,11.2-8.9
c5-2.2,11.1-3.3,18.3-3.3c5,0,10,0.6,14.8,1.8c4.8,1.2,9,2.9,12.6,5.2l-5.6,13.9c-7.3-4.1-14.6-6.2-21.9-6.2
c-5.1,0-8.9,0.8-11.3,2.5c-2.4,1.7-3.7,3.8-3.7,6.5c0,2.7,1.4,4.7,4.2,6c2.8,1.3,7.1,2.6,12.9,3.9c6,1.4,11,2.9,14.8,4.3
c3.8,1.4,7.1,3.7,9.9,6.8c2.7,3.1,4.1,7.3,4.1,12.5c0,4.5-1.3,8.6-3.8,12.4c-2.5,3.7-6.3,6.7-11.3,8.9c-5,2.2-11.2,3.3-18.4,3.3
C120,85.1,113.9,84.3,108.1,82.6z"/>
<path class="st0" d="M180.1,82.6c-5.8-1.7-10.5-3.9-14.1-6.6l6.2-13.8c3.4,2.5,7.4,4.5,12.1,6c4.7,1.5,9.3,2.3,14,2.3
c5.2,0,9-0.8,11.5-2.3c2.5-1.5,3.7-3.6,3.7-6.2c0-1.9-0.7-3.4-2.2-4.7c-1.5-1.2-3.3-2.2-5.6-3c-2.3-0.8-5.4-1.6-9.3-2.5
c-6-1.4-10.9-2.9-14.8-4.3c-3.8-1.4-7.1-3.7-9.9-6.9c-2.7-3.2-4.1-7.4-4.1-12.6c0-4.6,1.2-8.7,3.7-12.5c2.5-3.7,6.2-6.7,11.2-8.9
s11.1-3.3,18.3-3.3c5,0,10,0.6,14.8,1.8c4.8,1.2,9,2.9,12.6,5.2l-5.6,13.9c-7.3-4.1-14.6-6.2-21.9-6.2c-5.1,0-8.9,0.8-11.3,2.5
c-2.4,1.7-3.7,3.8-3.7,6.5c0,2.7,1.4,4.7,4.2,6c2.8,1.3,7.1,2.6,12.9,3.9c6,1.4,10.9,2.9,14.8,4.3s7.1,3.7,9.9,6.8
c2.7,3.1,4.1,7.3,4.1,12.5c0,4.5-1.3,8.6-3.8,12.4c-2.5,3.7-6.3,6.7-11.3,8.9c-5,2.2-11.2,3.3-18.4,3.3
C192,85.1,186,84.3,180.1,82.6z"/>
<path class="st1" d="M293.2,79.1c-6.2-3.5-11.1-8.2-14.7-14.3c-3.6-6.1-5.4-12.9-5.4-20.5c0-7.6,1.8-14.5,5.4-20.5
c3.6-6.1,8.5-10.9,14.7-14.3c6.2-3.5,13.2-5.2,20.9-5.2c5.7,0,11,0.9,15.8,2.8c4.8,1.8,8.9,4.6,12.3,8.2l-3.6,3.7
c-6.3-6.2-14.4-9.4-24.3-9.4c-6.6,0-12.6,1.5-18.1,4.5c-5.4,3-9.7,7.2-12.8,12.5s-4.6,11.2-4.6,17.8s1.5,12.5,4.6,17.8
c3.1,5.3,7.3,9.5,12.8,12.5c5.4,3,11.4,4.5,18.1,4.5c9.8,0,17.9-3.2,24.3-9.5l3.6,3.7c-3.4,3.6-7.5,6.4-12.4,8.2
c-4.9,1.9-10.1,2.8-15.7,2.8C306.3,84.3,299.4,82.6,293.2,79.1z"/>
<path class="st1" d="M395.4,30c3.9,3.7,5.9,9.2,5.9,16.4v37.4h-5.4V73.3c-1.9,3.5-4.6,6.2-8.2,8.1c-3.6,1.9-7.9,2.9-13,2.9
c-6.5,0-11.7-1.5-15.5-4.6c-3.8-3.1-5.7-7.1-5.7-12.2c0-4.9,1.8-8.9,5.2-11.9c3.5-3,9.1-4.6,16.8-4.6h20.2v-4.7
c0-5.5-1.5-9.7-4.5-12.5c-3-2.9-7.3-4.3-13-4.3c-3.9,0-7.7,0.7-11.2,2c-3.6,1.4-6.6,3.2-9.1,5.4l-2.8-4.1c2.9-2.6,6.5-4.7,10.6-6.2
c4.1-1.5,8.5-2.2,13-2.2C385.9,24.4,391.5,26.3,395.4,30z M387.9,76.2c3.4-2.3,6-5.5,7.7-9.8V55.3h-20.1c-5.8,0-10,1.1-12.6,3.2
c-2.6,2.1-3.9,5-3.9,8.7c0,3.8,1.4,6.9,4.3,9.1c2.9,2.2,6.9,3.3,12.1,3.3C380.3,79.6,384.5,78.5,387.9,76.2z"/>
<path class="st1" d="M469,28.2c4.4,2.6,7.9,6.1,10.4,10.6c2.5,4.5,3.8,9.7,3.8,15.5c0,5.8-1.3,11-3.8,15.5
c-2.5,4.6-6,8.1-10.4,10.6c-4.4,2.5-9.4,3.8-14.9,3.8c-5.2,0-9.9-1.2-14.1-3.7c-4.2-2.4-7.5-5.9-9.8-10.2v35.3h-5.6V24.8h5.4v13.9
c2.3-4.5,5.6-8,9.9-10.6c4.2-2.5,9-3.8,14.3-3.8C459.6,24.4,464.6,25.7,469,28.2z M465.9,76c3.6-2.1,6.5-5,8.5-8.8
c2.1-3.8,3.1-8.1,3.1-12.9c0-4.8-1-9.1-3.1-12.9c-2.1-3.8-4.9-6.7-8.5-8.8c-3.6-2.1-7.7-3.2-12.2-3.2c-4.5,0-8.6,1.1-12.1,3.2
c-3.6,2.1-6.4,5-8.5,8.8c-2.1,3.8-3.1,8.1-3.1,12.9c0,4.8,1,9.1,3.1,12.9c2.1,3.8,4.9,6.7,8.5,8.8c3.6,2.1,7.6,3.2,12.1,3.2
C458.3,79.1,462.3,78.1,465.9,76z"/>
<path class="st1" d="M500.3,9.2c-0.9-0.9-1.4-1.9-1.4-3.2c0-1.3,0.5-2.4,1.4-3.3c0.9-0.9,2-1.4,3.3-1.4c1.3,0,2.4,0.4,3.3,1.3
c0.9,0.9,1.4,1.9,1.4,3.2c0,1.3-0.5,2.4-1.4,3.3c-0.9,0.9-2,1.4-3.3,1.4C502.3,10.5,501.2,10.1,500.3,9.2z M500.7,24.8h5.6v58.9
h-5.6V24.8z"/>
<path class="st1" d="M559.4,80c-1.4,1.4-3.2,2.4-5.4,3.1c-2.1,0.7-4.4,1.1-6.7,1.1c-5.1,0-9.1-1.4-11.9-4.2
c-2.8-2.8-4.2-6.8-4.2-11.8V29.7h-10.8v-4.9h10.8V12h5.6v12.9h18.7v4.9H537v37.9c0,3.8,0.9,6.8,2.8,8.8c1.8,2,4.6,3,8.2,3
c3.7,0,6.7-1.1,9.1-3.3L559.4,80z"/>
<path class="st1" d="M611.8,30c3.9,3.7,5.9,9.2,5.9,16.4v37.4h-5.4V73.3c-1.9,3.5-4.6,6.2-8.2,8.1c-3.6,1.9-7.9,2.9-13,2.9
c-6.5,0-11.7-1.5-15.5-4.6c-3.8-3.1-5.7-7.1-5.7-12.2c0-4.9,1.8-8.9,5.2-11.9c3.5-3,9.1-4.6,16.8-4.6H612v-4.7
c0-5.5-1.5-9.7-4.5-12.5c-3-2.9-7.3-4.3-13-4.3c-3.9,0-7.7,0.7-11.2,2c-3.6,1.4-6.6,3.2-9.1,5.4l-2.8-4.1c2.9-2.6,6.5-4.7,10.6-6.2
c4.1-1.5,8.5-2.2,13-2.2C602.3,24.4,607.9,26.3,611.8,30z M604.3,76.2c3.4-2.3,6-5.5,7.7-9.8V55.3h-20.1c-5.8,0-10,1.1-12.6,3.2
c-2.6,2.1-3.9,5-3.9,8.7c0,3.8,1.4,6.9,4.3,9.1c2.9,2.2,6.9,3.3,12.1,3.3C596.7,79.6,600.9,78.5,604.3,76.2z"/>
<path class="st1" d="M640.9,0h5.6v83.8h-5.6V0z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.4 KiB

View File

@@ -1,11 +0,0 @@
<svg width="1354" height="420" viewBox="0 0 1354 420" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="1354" height="420" rx="20" fill="white"/>
<path d="M434.751 133.122H466.637L489.595 227.729C493.852 245.585 494.697 256.219 494.697 256.219H495.128C495.128 256.219 496.61 245.808 500.867 227.729L522.757 133.122H558.9L582.066 227.729C586.53 246.223 587.598 256.219 587.598 256.219H588.236C588.236 256.219 588.666 246.223 592.907 227.729L615.02 133.122H646.907L606.523 288.313H571.017L546.576 194.344C541.474 173.936 541.044 164.801 541.044 164.801H540.614C540.614 164.801 540.183 173.936 535.512 194.344L512.553 288.313H475.996L434.751 133.122Z" fill="black"/>
<path d="M641.583 231.934C641.583 196.428 664.541 173.47 699.202 173.47C733.639 173.47 756.597 196.428 756.597 231.934C756.597 267.647 733.639 290.828 699.202 290.828C664.557 290.812 641.583 267.647 641.583 231.934ZM726.832 231.934C726.832 208.976 715.783 195.998 699.202 195.998C681.346 195.998 671.349 210.458 671.349 231.934C671.349 255.323 682.398 268.284 699.202 268.284C717.058 268.284 726.832 253.824 726.832 231.934Z" fill="black"/>
<path d="M770.836 175.21H799.103V196.048H799.741C804.635 185.207 816.322 174.365 836.299 174.365C839.695 174.365 841.831 174.796 843.314 175.21V203.478H842.469C842.469 203.478 839.918 202.633 832.903 202.633C811.013 202.633 799.103 215.594 799.103 239.828V288.295H770.836V175.21Z" fill="black"/>
<path d="M856.5 133.122H884.767V182.865C884.767 212.2 884.336 217.509 884.336 217.509H884.767L926.857 175.212H962.139L912.843 224.11L970.031 288.313H936.646L895.401 241.536L884.767 251.946V288.297H856.5V133.122Z" fill="black"/>
<path d="M970.444 211.285C970.444 163.455 1000.21 131.569 1044.85 131.569C1089.49 131.569 1119.26 163.455 1119.26 211.285C1119.26 259.114 1089.49 291.001 1044.85 291.001C1000.21 291.001 970.444 259.114 970.444 211.285ZM1088.42 211.285C1088.42 178.761 1071 156.855 1044.84 156.855C1018.67 156.855 1001.26 178.761 1001.26 211.285C1001.26 243.809 1018.69 265.715 1044.84 265.715C1070.98 265.715 1088.42 243.809 1088.42 211.285Z" fill="black"/>
<path d="M1130.08 236.656H1162.4C1162.4 254.943 1174.95 265.146 1194.08 265.146C1210.23 265.146 1221.29 257.063 1221.29 245.584C1221.29 232.622 1212.79 229.21 1185.79 223.901C1161.12 219.007 1134.98 210.716 1134.98 178.399C1134.98 151.408 1157.93 131 1193.01 131C1229.57 131 1252.11 150.132 1252.11 179.037H1219.79C1219.79 165.007 1208.95 156.286 1193.01 156.286C1176.86 156.286 1166.86 164.146 1166.86 175.625C1166.86 187.742 1173.88 192.413 1195.56 196.878C1227.65 203.685 1254.02 207.288 1254.02 243.001C1254.02 271.3 1229.36 290.432 1193.01 290.432C1156.02 290.432 1130.08 268.957 1130.08 236.656Z" fill="black"/>
<path d="M100 210C100 214.824 101.269 219.647 103.723 223.793L148.231 300.878C152.8 308.747 159.739 315.178 168.369 318.055C185.377 323.724 202.977 316.447 211.354 301.893L222.1 283.278L179.708 210L224.47 132.408L235.216 113.792C238.431 108.208 242.747 103.638 247.824 100H243.17H178.777C166.677 100 155.508 106.431 149.5 116.923L103.723 196.208C101.269 200.354 100 205.177 100 210Z" fill="#6363F1"/>
<path d="M353.847 210C353.847 205.177 352.578 200.353 350.124 196.207L305.024 118.107C296.647 103.638 279.047 96.3608 262.039 101.945C253.409 104.822 246.47 111.253 241.901 119.122L231.747 136.638L274.139 210L229.378 287.592L218.632 306.208C215.416 311.708 211.101 316.362 206.024 320H210.678H275.07C287.17 320 298.34 313.569 304.347 303.077L350.124 223.792C352.578 219.646 353.847 214.823 353.847 210Z" fill="#6363F1"/>
</svg>

Before

Width:  |  Height:  |  Size: 3.4 KiB

21
.github/workflows/aws-costs.yml vendored Normal file
View File

@@ -0,0 +1,21 @@
name: Sends Daily AWS Costs to Slack
on:
# Allow manual Run
workflow_dispatch:
# Run at 7:00 UTC every day
schedule:
- cron: "0 7 * * *"
jobs:
aws_costs:
runs-on: ubuntu-latest
steps:
- name: Get Costs
env:
AWS_KEY: ${{ secrets.COST_AWS_ACCESS_KEY }}
AWS_SECRET: ${{ secrets.COST_AWS_SECRET_KEY }}
AWS_REGION: ${{ secrets.COST_AWS_REGION }}
SLACK_CHANNEL: ${{ secrets.SLACK_COST_CHANNEL }}
SLACK_TOKEN: ${{ secrets.SLACK_TOKEN }}
run: |
npm install -g aws-cost-cli
aws-cost -k $AWS_KEY -s $AWS_SECRET -r $AWS_REGION -S $SLACK_TOKEN -C $SLACK_CHANNEL

View File

@@ -3,28 +3,36 @@ on:
push:
branches: [ master ]
env:
ROADMAP_GA_SECRET: ${{ secrets.GA_SECRET }}
PUBLIC_API_URL: "https://api.roadmap.sh"
PUBLIC_EDITOR_APP_URL: "https://draw.roadmap.sh"
PUBLIC_AVATAR_BASE_URL: "https://dodrc8eu8m09s.cloudfront.net/avatars"
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PAT: ${{ secrets.PAT }}
CI: true
NEXT_TELEMETRY_DISABLED: 1
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: actions/setup-node@v1
with:
node-version: 16
node-version: 18
- name: Prepare Draw Repository
run: |
git clone https://${{ secrets.GH_PAT }}@github.com/roadmapsh/web-draw.git .temp/web-draw --depth 1
- uses: pnpm/action-setup@v2.2.2
with:
version: 7.13.4
- name: Setup Environment
run: |
npm install
pnpm install
- name: Generate meta and build
run: |
npm run meta
npm run generate-renderer
npm run build
touch ./dist/.nojekyll
echo 'roadmap.sh' > ./dist/CNAME
- name: Deploy to GH Pages
run: |
git config user.email "kamranahmed.se@gmail.com"

38
.github/workflows/update-deps.yml vendored Normal file
View File

@@ -0,0 +1,38 @@
name: Update dependencies
on:
workflow_dispatch: # allow manual run
schedule:
- cron: '0 0 * * 0' # every sunday at midnight
jobs:
upgrade-deps:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v3
with:
node-version: 18
- uses: pnpm/action-setup@v2.2.2
with:
version: 7.13.4
- name: Upgrade dependencies
run: |
pnpm install
npm run upgrade
pnpm install --lockfile-only
- name: Create PR
uses: peter-evans/create-pull-request@v4
with:
delete-branch: false
branch: "update-deps"
base: "master"
labels: |
dependencies
automated pr
reviewers: kamranahmedse
commit-message: "chore: update dependencies to latest"
title: "Upgrade dependencies to latest"
body: |
Updates all dependencies to latest versions.
Please review the changes and merge if everything looks good.

52
.gitignore vendored
View File

@@ -1,37 +1,33 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
out
.idea
.temp
# build output
dist/
.output/
# dependencies
/node_modules
/.pnp
.pnp.js
yarn.lock
node_modules/
# testing
/coverage
scripts/developer-roadmap
# next.js
/.next/
/out/
# production
/build
# misc
.idea
.DS_Store
*.pem
# debug
# logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# local env files
.env.local
.env.development.local
.env.test.local
.env.production.local
# vercel
.vercel
# environment variables
.env
.env.production
# macOS-specific files
.DS_Store
/test-results/
/playwright-report/
/playwright/.cache/
tests-examples
*.csv
/editor/*
!/editor/readonly-editor.tsx

2
.npmrc Normal file
View File

@@ -0,0 +1,2 @@
auto-install-peers=true
strict-peer-dependencies=false

7
.prettierignore Normal file
View File

@@ -0,0 +1,7 @@
app-dist
dist
.idea
.github
public
node_modules
pnpm-lock.yaml

View File

@@ -1,5 +0,0 @@
{
"semi": true,
"singleQuote": true,
"tabWidth": 2
}

18
.prettierrc.cjs Normal file
View File

@@ -0,0 +1,18 @@
module.exports = {
semi: true,
singleQuote: true,
overrides: [
{
files: '*.astro',
options: {
parser: 'astro',
singleQuote: true,
jsxSingleQuote: true,
},
},
],
plugins: [
require.resolve('prettier-plugin-astro'),
'prettier-plugin-tailwindcss',
],
};

4
.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,4 @@
{
"recommendations": ["astro-build.astro-vscode"],
"unwantedRecommendations": []
}

11
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,11 @@
{
"version": "0.2.0",
"configurations": [
{
"command": "./node_modules/.bin/astro dev",
"name": "Development server",
"request": "launch",
"type": "node-terminal"
}
]
}

6
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,6 @@
{
"prettier.documentSelectors": ["**/*.astro"],
"[astro]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}

64
astro.config.mjs Normal file
View File

@@ -0,0 +1,64 @@
// https://astro.build/config
import sitemap from '@astrojs/sitemap';
import tailwind from '@astrojs/tailwind';
import compress from 'astro-compress';
import { defineConfig } from 'astro/config';
import rehypeExternalLinks from 'rehype-external-links';
import { fileURLToPath } from 'node:url';
import { serializeSitemap, shouldIndexPage } from './sitemap.mjs';
import react from '@astrojs/react';
// https://astro.build/config
export default defineConfig({
site: 'https://roadmap.sh/',
markdown: {
shikiConfig: {
theme: 'dracula',
},
rehypePlugins: [
[
rehypeExternalLinks,
{
target: '_blank',
rel: function (element) {
const href = element.properties.href;
const whiteListedStarts = [
'/',
'#',
'mailto:',
'https://github.com/kamranahmedse',
'https://thenewstack.io',
'https://cs.fyi',
'https://roadmap.sh',
];
if (whiteListedStarts.some((start) => href.startsWith(start))) {
return [];
}
return 'noopener noreferrer nofollow';
},
},
],
],
},
build: {
format: 'file',
},
integrations: [
tailwind({
config: {
applyBaseStyles: false,
},
}),
sitemap({
filter: shouldIndexPage,
serialize: serializeSitemap,
}),
compress({
HTML: false,
CSS: false,
JavaScript: false,
}),
react(),
],
});

View File

@@ -14,21 +14,21 @@ appearance, race, religion, or sexual identity and orientation.
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
- The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
- Trolling, insulting/derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
- Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities

View File

@@ -1,60 +0,0 @@
import { Box, Container, Flex, Heading, Image, Link, Text } from '@chakra-ui/react';
import React from 'react';
type ContentPageHeaderProps = {
formattedDate: string;
title: string;
subtitle: string;
author?: {
name: string;
twitter: string;
picture: string;
},
subLink?: {
text: string;
url: string;
}
};
export function ContentPageHeader(props: ContentPageHeaderProps) {
const { title, subtitle, author = null, formattedDate, subLink = null } = props;
return (
<Box pt={['35px', '35px', '70px']} pb={['35px', '35px', '55px']} borderBottomWidth={1} mb='30px'>
<Container maxW='container.md' position='relative' textAlign={['left', 'left', 'center']}>
<Flex alignItems='center' justifyContent={['flex-start', 'flex-start', 'center']}
fontSize={['12px', '12px', '14px']}>
{author?.name && (
<>
<Link
d={['none', 'flex', 'flex']}
target='_blank'
href={`https://twitter.com/${author.twitter}`}
alignItems='center'
fontWeight={600}
color='gray.500'
>
<Image alt={''} rounded={'full'} mr='7px' w='22px' src={author.picture} />
{author.name}
</Link>
<Text d={['none', 'inline', 'inline']} mx='7px' color='gray.500' as='span'>&middot;</Text>
</>
)}
<Text color='gray.500' as='span'>{formattedDate}</Text>
{subLink?.text && (
<>
<Text d={['none', 'none', 'inline']} mx='7px' color='gray.500' as='span'>&middot;</Text>
<Link d={['none', 'none', 'inline']} color='blue.500' fontWeight={500}
href={subLink.url} target={'_blank'}>{subLink.text}</Link>
</>
)}
</Flex>
<Heading as='h1' color='black' fontSize={['30px', '30px', '45px']} lineHeight={['40px', '40px', '53px']}
fontWeight={700} my={['5px', '5px', '10px']}>{title}</Heading>
<Text fontSize={['14px', '14px', '16px']} color='gray.700'>{subtitle}</Text>
</Container>
</Box>
);
}

View File

@@ -1,69 +0,0 @@
import { Box, Flex, Heading, Image, Link } from '@chakra-ui/react';
import { event } from '../lib/gtag';
function getPageSlug() {
const pathname = (typeof window !== 'undefined' ? window : {} as any)?.location?.pathname || '';
return pathname?.replace(/\//g, '');
}
export const CustomAd = () => {
const slug = getPageSlug();
if (slug !== 'devops') {
return null;
}
return (
<Link
href='https://www.getambassador.io/edge-stack-guide-v4?utm_source=roadmap.sh&utm_medium=ebook&utm_campaign=edgestack-guide'
id='custom-ad'
pos='fixed'
bottom='15px'
right='20px'
zIndex={999}
display='flex'
maxWidth='330px'
bg='white'
boxShadow='0 1px 4px 1px hsla(0, 0%, 0%, .1)'
_hover={{ textDecoration: 'none' }}
rel="noopener sponsored"
target={'_blank'}
onClick={() => {
event({
category: 'SponsorClick',
action: `Ambassador EBook Redirect`,
label: `Clicked Ambassador EBook Link`
});
}}
>
<Image
src='https://i.imgur.com/0bH1Vl6.png'
alt='Custom Logo'
height={['100px', '100px', '100px', 'auto']}
width='130'
style={{ maxWidth: '130px', border: 'none' }}
/>
<Flex as='span' flexDirection='column' justifyContent='space-between'>
<Box as='span' p='10px'>
<Heading as='span' fontSize='14px' mb='5px' display='block'>Free eBook</Heading>
<Box display='block' as='span' fontSize='13px' lineHeight={1.5} fontWeight={500} color='gray.500'>
Learn about API Gateways, Microservices, Load Balancing, and more with this free eBook.
</Box>
</Box>
<Box as='span'
textAlign='center'
fontWeight={600}
fontSize='9px'
letterSpacing='0.5px'
textTransform='uppercase'
padding='5px 10px'
display={'block'}
background='repeating-linear-gradient(-45deg, transparent, transparent 5px, hsla(0, 0%, 0%, .025) 5px, hsla(0, 0%, 0%, .025) 10px) hsla(203, 11%, 95%, .4)'
>
Partner Content
</Box>
</Flex>
</Link>
);
};

View File

@@ -1,46 +0,0 @@
import { Box, Link, Text } from '@chakra-ui/react';
type DimmedMoreProps = {
text: string;
href: string;
};
export function DimmedMore(props: DimmedMoreProps) {
const { text, href } = props;
return (
<Box position='relative' textAlign='center' bottom='20px'>
<Box
opacity={1}
pointerEvents='none'
position='absolute'
bottom={0}
height='200px'
width='100%'
background='linear-gradient(180deg, rgb(255 255 255 / 40%), white)'
/>
<Link
rounded='20px'
display='inline'
bg='green.600'
color='white'
p='7px 20px'
href={href}
fontWeight={800}
fontSize='11px'
textTransform='uppercase'
my='25px'
position='relative'
_hover={{
textDecoration: 'none',
'& .forward-arrow': {
transform: 'translateX(3px)'
}
}}>
{text}
<Text d='inline-block' as='span' transition='200ms' ml='4px' className='forward-arrow'>&rarr;</Text>
</Link>
</Box>
);
}

View File

@@ -1,124 +0,0 @@
import { Box, Container, Flex, Image, Link, SimpleGrid, Stack, Text } from '@chakra-ui/react';
import siteConfig from '../content/site.json';
import { CustomAd } from './custom-ad';
import React from 'react';
import { event } from '../lib/gtag';
function NavigationLinks() {
return (
<>
<Stack isInline display={['none', 'none', 'flex']} justifyContent='center' color='gray.400' fontWeight={600}
spacing='30px'>
<Link _hover={{ color: 'white' }} href='/roadmaps'>Roadmaps</Link>
<Link _hover={{ color: 'white' }} href='/guides'>Guides</Link>
<Link _hover={{ color: 'white' }} href='/watch'>Videos</Link>
<Link _hover={{ color: 'white' }} href='/about'>About</Link>
<Link _hover={{ color: 'white' }} href={siteConfig.url.youtube} target='_blank'>YouTube</Link>
</Stack>
<Stack display={['flex', 'flex', 'none']} color='gray.400' fontWeight={600} spacing={0}>
<Link py='7px' borderBottomWidth={1} borderBottomColor='gray.800' _hover={{ color: 'white' }}
href='/roadmaps'>Roadmaps</Link>
<Link py='7px' borderBottomWidth={1} borderBottomColor='gray.800' _hover={{ color: 'white' }}
href='/guides'>Guides</Link>
<Link py='7px' borderBottomWidth={1} borderBottomColor='gray.800' _hover={{ color: 'white' }}
href='/watch'>Videos</Link>
<Link py='7px' borderBottomWidth={1} borderBottomColor='gray.800' _hover={{ color: 'white' }}
href='/about'>About</Link>
<Link py='7px' _hover={{ color: 'white' }} target='_blank'
href={siteConfig.url.youtube}>YouTube</Link>
</Stack>
</>
);
}
export function Footer() {
return (
<Box bg='brand.hero' p={['25px 0', '25px 0', '40px 0']}>
<Container maxW='container.md'>
<NavigationLinks />
<SimpleGrid mt={['40px', '40px', '50px']} mb='40px' gap={['40px', '40px', '75px']} columns={[1, 1, 2, 2]}
justifyContent='space-between'>
<Box maxWidth={'550px'}>
<Flex gap={0} alignItems='center' color='gray.400'>
<Link d='flex' alignItems='center' fontWeight={600} _hover={{ textDecoration: 'none', color: 'white' }}
href='/'>
<Image alt='' h='25px' w='25px' src='/logo.svg' mr='6px' />
roadmap.sh
</Link>
<Text as='span' mx='7px'>by</Text>
<Link bg='blue.500' px='6px' py='2px' rounded='4px' color='white' fontWeight={600} fontSize='13px'
_hover={{ textDecoration: 'none', bg: 'blue.600' }} href={siteConfig.url.twitter}
target='_blank'>@kamranahmedse</Link>
</Flex>
<Text my='15px' fontSize='14px' color='gray.500'>Community created roadmaps, articles, resources and
journeys to help you choose your path and grow in your career.</Text>
<Text fontSize='14px' color='gray.500'>
<Text as='span' mr='10px'>&copy; roadmap.sh</Text>&middot;
<Link href='/about' _hover={{ textDecoration: 'none', color: 'white' }} color='gray.400'
mx='10px'>FAQs</Link>&middot;
<Link href='/terms' _hover={{ textDecoration: 'none', color: 'white' }} color='gray.400'
mx='10px'>Terms</Link>&middot;
<Link href='/privacy' _hover={{ textDecoration: 'none', color: 'white' }} color='gray.400'
mx='10px'>Privacy</Link>
</Text>
</Box>
<Box maxWidth={'550px'} textAlign={['left', 'left', 'right']}>
<Link display='flex' justifyContent={['flex-start', 'flex-start', 'flex-end']} fontWeight={600}
_hover={{ textDecoration: 'none', color: 'white' }}
href='https://thenewstack.io?utm_source=roadmap-sh&utm_medium=Referral&utm_campaign=Footer'
target='_blank'>
<Image alt='' w='195px' src='/tns.png' />
</Link>
<Text my='15px' fontSize='14px' color='gray.500'>The leading DevOps resource for Kubernetes, cloud-native
computing, and the latest in at-scale development, deployment, and management.</Text>
<Text fontSize='14px' color='gray.500'>
<Link
href='https://thenewstack.io/category/devops/?utm_source=roadmap-sh&utm_medium=Referral&utm_campaign=Footer'
target='_blank'
_hover={{ textDecoration: 'none', color: 'white' }}
onClick={() => {
event({
category: 'PartnerClick',
action: `TNS Referral`,
label: `TNS Referral - Footer`,
});
}}
color='gray.400' mx='10px' ml={['0', '0', '10px']}>DevOps</Link>&middot;
<Link
href='https://thenewstack.io/category/kubernetes/?utm_source=roadmap-sh&utm_medium=Referral&utm_campaign=Footer'
target='_blank' _hover={{ textDecoration: 'none', color: 'white' }}
onClick={() => {
event({
category: 'PartnerClick',
action: `TNS Referral`,
label: `TNS Referral - Footer`,
});
}}
color='gray.400' mx='10px'>Kubernetes</Link>&middot;
<Link
href='https://thenewstack.io/category/cloud-native/?utm_source=roadmap-sh&utm_medium=Referral&utm_campaign=Footer'
target='_blank' _hover={{ textDecoration: 'none', color: 'white' }}
onClick={() => {
event({
category: 'PartnerClick',
action: `TNS Referral`,
label: `TNS Referral - Footer`,
});
}}
color='gray.400' mx='10px'>Cloud-Native</Link>
</Text>
</Box>
</SimpleGrid>
</Container>
<CustomAd />
</Box>
);
}

View File

@@ -1,134 +0,0 @@
import { useState } from 'react';
import { HamburgerIcon } from '@chakra-ui/icons';
import { Box, CloseButton, Container, Flex, IconButton, Link, Stack, Text } from '@chakra-ui/react';
import RoadmapLogo from '../components/icons/roadmap.svg';
type MenuLinkProps = {
text: string;
link: string;
target?: '_blank' | '_self' | '_parent' | '_top';
isFancy?: boolean;
};
function MenuLink(props: MenuLinkProps) {
const { text, link, target = '_self', isFancy = false } = props;
const gradientProp = isFancy ? {
bgGradient: 'linear(to-r, yellow.100, teal.100)',
bgClip: 'text',
_hover: {
color: 'yellow.100'
}
} : {};
return <Link
borderBottomWidth={0}
borderBottomColor='gray.500'
_hover={{ textDecoration: 'none', borderBottomColor: 'white' }}
fontWeight={500}
href={link}
target={target}
{...gradientProp}
>
{text}
</Link>;
}
function DesktopMenuLinks() {
return (
<Stack d={['none', 'flex', 'flex']} shouldWrapChildren isInline spacing='15px' alignItems='center' color='gray.50'
fontSize='15px'>
<MenuLink text={'Roadmaps'} link={'/roadmaps'} />
<MenuLink text={'Guides'} link={'/guides'} />
<MenuLink
target={'_blank'}
text={'Hiring a DevRel'}
isFancy
link={'https://docs.google.com/forms/d/e/1FAIpQLSesFpPxgKx_8-L5hm7fw6NQpgGixrMGC4Cg3M8NHPQhFfSajQ/viewform'}
/>
<Link ml='10px' bgGradient='linear(to-l, yellow.700, red.600)' p='7px 10px' rounded='4px'
_hover={{ textDecoration: 'none', bgGradient: 'linear(to-l, red.800, yellow.700)' }}
fontWeight={500} href={'/signup'}>Subscribe</Link>
</Stack>
);
}
function MobileMenuLinks() {
const [isOpen, setIsOpen] = useState(false);
return (
<>
<IconButton
rounded='5px'
padding={0}
aria-label={'Menu'}
d={['block', 'none', 'none']}
icon={<HamburgerIcon color='white' w='25px' height='25px' />}
color='white'
cursor='pointer'
h='auto'
bg='transparent'
_hover={{ bg: 'transparent' }}
_active={{ bg: 'transparent' }}
_focus={{ bg: 'transparent' }}
onClick={() => setIsOpen(true)}
/>
{isOpen && (
<Stack color='gray.100'
fontSize={['22px', '22px', '22px', '32px']}
alignItems='center'
justifyContent='center'
pos='fixed'
left={0}
right={0}
bottom={0}
top={0}
bg='gray.900'
spacing='12px'
zIndex={999}
>
<Link href='/roadmaps'>Roadmaps</Link>
<Link href='/guides'>Guides</Link>
<Link href='/watch'>Videos</Link>
<Link href='/signup'>Subscribe</Link>
<CloseButton onClick={() => setIsOpen(false)} pos='fixed' top='40px' right='15px' size='lg' />
</Stack>
)}
</>
);
}
type GlobalHeaderProps = {
variant?: 'transparent' | 'solid'
};
export function GlobalHeader(props: GlobalHeaderProps) {
const { variant = 'solid' } = props;
return (
<Box bg={variant === 'solid' ? 'gray.900' : 'transparent'} p='20px 0'>
<Container maxW='container.md'>
<Flex justifyContent='space-between' alignItems='center'>
<Box>
<Link w='100%'
d='flex'
href='/'
alignItems='center'
color='white'
fontWeight={600}
_hover={{ textDecoration: 'none' }}
fontSize='18px'>
<RoadmapLogo style={{ height: '30px', width: '30px', marginRight: '10px' }} />
<Text d={['block', 'none', 'block']} as='span'>roadmap.sh</Text>
</Link>
</Box>
<DesktopMenuLinks />
<MobileMenuLinks />
</Flex>
</Container>
</Box>
);
}

View File

@@ -1,33 +0,0 @@
import { Badge, Box, Heading, Link, Text } from '@chakra-ui/react';
import { GuideType } from '../../lib/guide';
type GuideGridItemProps = {
title: string;
href: string;
subtitle: string;
date: string;
isNew?: boolean;
colorIndex?: number;
type?: GuideType['type'];
};
const bgColorList = [
'gray.700',
'purple.800'
];
export function GuideGridItem(props: GuideGridItemProps) {
const { title, subtitle, date, isNew = false, colorIndex = 0, href, type } = props;
return (
<Box _hover={{ textDecoration: 'none', transform: 'scale(1.02)' }} as={Link} href={href} shadow='xl' p='20px'
rounded='10px' bg={bgColorList[colorIndex] ?? bgColorList[0]} flex={1}>
<Text mb='10px' fontSize='13px' color='gray.400' textTransform='capitalize'>
{isNew && <Badge colorScheme={'green'} mr='10px'>New</Badge>}
{type} Guide
</Text>
<Heading color='white' mb={'6px'} fontSize='20px'>{title}</Heading>
<Text color='gray.300' fontSize='14px'>{subtitle}</Text>
</Box>
);
}

View File

@@ -1,167 +0,0 @@
import NextHead from 'next/head';
import siteConfig from '../content/site.json';
import { RoadmapType } from '../lib/roadmap';
type HelmetProps = {
title?: string;
keywords?: string[];
canonical?: string;
description?: string;
noIndex?: boolean;
roadmap?: RoadmapType;
};
function getRichSnippetJson(roadmap: RoadmapType) {
return {
'@context': 'https://schema.org',
'@type': 'Article',
mainEntityOfPage: {
'@type': 'WebPage',
'@id': `https://roadmap.sh/${roadmap.id}`,
},
headline: roadmap.seo.title,
description: roadmap.seo.description,
image: roadmap.jsonUrl
? `https://roadmap.sh/roadmaps/${roadmap.id}.png`
: undefined,
author: {
'@type': 'Person',
name: 'Kamran Ahmed',
url: 'https://twitter.com/kamranahmedse',
},
publisher: {
'@type': 'Organization',
name: 'roadmap.sh',
logo: {
'@type': 'ImageObject',
url: 'https://roadmap.sh/brand-square.png',
},
},
};
}
const Helmet = (props: HelmetProps) => {
const { roadmap, title, canonical, description, keywords, noIndex = false } = props;
return (
<NextHead>
<meta charSet="UTF-8" />
<title>{title || siteConfig.title}</title>
<meta
name="description"
content={description || siteConfig.description}
/>
<meta name="author" content={siteConfig.author} />
<meta
name="keywords"
content={keywords ? keywords.join(',') : siteConfig.keywords.join(',')}
/>
{noIndex && <meta name="robots" content="noindex" /> }
<meta
name="viewport"
content="width=device-width, user-scalable=yes, initial-scale=1.0, maximum-scale=3.0, minimum-scale=1.0"
/>
{canonical && <link rel="canonical" href={canonical} />}
<meta httpEquiv="Content-Language" content="en" />
<meta property="og:title" content={title || siteConfig.title} />
<meta
property="og:description"
content={description || siteConfig.description}
/>
<meta
property="og:image"
content={`${siteConfig.url.web}${siteConfig.logoSquare}`}
/>
<meta property="og:url" content={siteConfig.url.web} />
<meta property="og:type" content="website" />
<meta
property="article:publisher"
content={`https://facebook.com/${siteConfig.facebook}`}
/>
<meta property="og:site_name" content={siteConfig.name} />
<meta property="article:author" content={siteConfig.author} />
<meta name="twitter:card" content="summary" />
<meta name="twitter:site" content={`@${siteConfig.twitter}`} />
<meta name="twitter:title" content={title || siteConfig.title} />
<meta
name="twitter:description"
content={description || siteConfig.description}
/>
<meta
name="twitter:image"
content={`${siteConfig.url.web}${siteConfig.logoSquare}`}
/>
<meta name="twitter:image:alt" content="roadmap.sh" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta
name="apple-mobile-web-app-status-bar-style"
content="black-translucent"
/>
<link
rel="apple-touch-icon"
sizes="180x180"
href="/manifest/apple-touch-icon.png"
/>
<meta name="msapplication-TileColor" content="#101010" />
<meta name="theme-color" content="#848a9a" />
<link rel="manifest" href="/manifest/manifest.json" />
<link
rel="icon"
type="image/png"
sizes="32x32"
href="/manifest/icon32.png"
/>
<link
rel="icon"
type="image/png"
sizes="16x16"
href="/manifest/icon16.png"
/>
<link
rel="shortcut icon"
href="/manifest/favicon.ico"
type="image/x-icon"
/>
<link rel="icon" href="/manifest/favicon.ico" type="image/x-icon" />
{roadmap?.id && (
<script
type="application/ld+json"
dangerouslySetInnerHTML={{
__html: JSON.stringify(getRichSnippetJson(roadmap)),
}}
/>
)}
{/* Global Site Tag (gtag.js) - Google Analytics */}
{process.env.GA_SECRET && (
<>
<script
async
src={`https://www.googletagmanager.com/gtag/js?id=${process.env.GA_SECRET}`}
/>
<script
dangerouslySetInnerHTML={{
__html: `
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '${process.env.GA_SECRET}');
`,
}}
/>
</>
)}
</NextHead>
);
};
export default Helmet;

View File

@@ -1,73 +0,0 @@
import { RoadmapType } from '../../lib/roadmap';
import { SimpleGrid, Tag } from '@chakra-ui/react';
import { HomeRoadmapItem } from '../roadmap/home-roadmap-item';
type FeaturedRoadmapsListProps = {
roadmaps: RoadmapType[];
title: string;
};
export const upcomingRoadmaps = [
{
type: 'Role Based',
title: 'React Native',
description: 'Step by step guide to become a React Native Developer',
id: 'react-native'
},
{
type: 'Role Based',
title: 'Cyber Security',
description: 'Step by step guide to become a Cyber Security Expert',
id: 'cyber-security'
},
// {
// type: 'Skill Based',
// title: 'TypeScript',
// description: 'Step by step guide to learn TypeScript in 2022',
// id: 'typescript'
// },
// {
// type: 'Skill Based',
// title: 'Rust',
// description: 'Step by step guide to learn Rust in 2022',
// id: 'rust'
// },
];
export function FeaturedRoadmapsList(props: FeaturedRoadmapsListProps) {
const { roadmaps, title } = props;
return (
<>
<Tag bg='gray.400' mb={4}>{title}</Tag>
<SimpleGrid columns={[1, 2, 3]} spacing={['10px', '10px', '15px']} mb='40px'>
<>
{roadmaps.map((roadmap: RoadmapType, counter: number) => (
<HomeRoadmapItem
isUpcoming={roadmap.isUpcoming}
url={`/${roadmap.id}`}
key={roadmap.id}
colorIndex={counter}
title={roadmap.featuredTitle === 'Software Design and Architecture' ? 'Software Design' : roadmap.featuredTitle}
isCommunity={roadmap.isCommunity}
isNew={roadmap.isNew}
subtitle={roadmap.featuredDescription}
/>
))}
{upcomingRoadmaps
.filter(roadmap => roadmap.type === title)
.map((roadmap, counter) => (
<HomeRoadmapItem
isUpcoming={true}
url={`/upcoming?id=${roadmap.id}`}
key={`upcoming-${roadmap.id}`}
colorIndex={9}
title={roadmap.title}
subtitle={roadmap.description}
/>
))}
</>
</SimpleGrid>
</>
);
}

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h137.25V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.27c-30.81 0-40.42 19.12-40.42 38.73V256h68.78l-11 71.69h-57.78V480H400a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48z"/></svg>

Before

Width:  |  Height:  |  Size: 507 B

View File

@@ -1,3 +0,0 @@
<svg width="29" height="29">
<path d="M23.2 5H5.8a.8.8 0 0 0-.8.8V23.2c0 .44.35.8.8.8h9.3v-7.13h-2.38V13.9h2.38v-2.38c0-2.45 1.55-3.66 3.74-3.66 1.05 0 1.95.08 2.2.11v2.57h-1.5c-1.2 0-1.48.57-1.48 1.4v1.96h2.97l-.6 2.97h-2.37l.05 7.12h5.1a.8.8 0 0 0 .79-.8V5.8a.8.8 0 0 0-.8-.79"></path>
</svg>

Before

Width:  |  Height:  |  Size: 298 B

View File

@@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor">
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/>
</svg>

Before

Width:  |  Height:  |  Size: 841 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.2 229.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z"/></svg>

Before

Width:  |  Height:  |  Size: 515 B

View File

@@ -1,4 +0,0 @@
<svg viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true">
<path fill-rule="evenodd"
d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path>
</svg>

Before

Width:  |  Height:  |  Size: 474 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M283.2 345.5c2.7 2.7 2.7 6.8 0 9.2-24.5 24.5-93.8 24.6-118.4 0-2.7-2.4-2.7-6.5 0-9.2 2.4-2.4 6.5-2.4 8.9 0 18.7 19.2 81 19.6 100.5 0 2.4-2.3 6.6-2.3 9 0zm-91.3-53.8c0-14.9-11.9-26.8-26.5-26.8-14.9 0-26.8 11.9-26.8 26.8 0 14.6 11.9 26.5 26.8 26.5 14.6 0 26.5-11.9 26.5-26.5zm90.7-26.8c-14.6 0-26.5 11.9-26.5 26.8 0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-11.9 26.8-26.5 0-14.9-11.9-26.8-26.8-26.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-99.7 140.6c-10.1 0-19 4.2-25.6 10.7-24.1-16.7-56.5-27.4-92.5-28.6l18.7-84.2 59.5 13.4c0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-12.2 26.8-26.8 0-14.6-11.9-26.8-26.8-26.8-10.4 0-19.3 6.2-23.8 14.9l-65.7-14.6c-3.3-.9-6.5 1.5-7.4 4.8l-20.5 92.8c-35.7 1.5-67.8 12.2-91.9 28.9-6.5-6.8-15.8-11-25.9-11-37.5 0-49.8 50.4-15.5 67.5-1.2 5.4-1.8 11-1.8 16.7 0 56.5 63.7 102.3 141.9 102.3 78.5 0 142.2-45.8 142.2-102.3 0-5.7-.6-11.6-2.1-17 33.6-17.2 21.2-67.2-16.1-67.2z"/></svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -1,4 +0,0 @@
<svg width="30" height="30" viewBox="0 0 283 283" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 39C0 17.4609 17.4609 0 39 0H244C265.539 0 283 17.4609 283 39V244C283 265.539 265.539 283 244 283H39C17.4609 283 0 265.539 0 244V39Z" fill="black"></path>
<path d="M121.215 210.72C119.348 211.28 116.361 211.84 112.255 212.4C108.335 212.96 104.228 213.24 99.9347 213.24C95.828 213.24 92.0947 212.96 88.7347 212.4C85.5614 211.84 82.8547 210.72 80.6147 209.04C78.3747 207.36 76.6014 205.12 75.2947 202.32C74.1747 199.333 73.6147 195.507 73.6147 190.84V106.84C73.6147 102.547 74.3614 98.9067 75.8547 95.92C77.5347 92.7467 79.868 89.9467 82.8547 87.52C85.8414 85.0933 89.4814 82.9467 93.7747 81.08C98.2547 79.0267 103.015 77.2533 108.055 75.76C113.095 74.2667 118.321 73.1467 123.735 72.4C129.148 71.4667 134.561 71 139.975 71C148.935 71 156.028 72.7733 161.255 76.32C166.481 79.68 169.095 85.28 169.095 93.12C169.095 95.7333 168.721 98.3467 167.975 100.96C167.228 103.387 166.295 105.627 165.175 107.68C161.255 107.68 157.241 107.867 153.135 108.24C149.028 108.613 145.015 109.173 141.095 109.92C137.175 110.667 133.441 111.507 129.895 112.44C126.535 113.187 123.641 114.12 121.215 115.24V210.72ZM166.387 188.32C166.387 180.48 168.813 173.947 173.667 168.72C178.52 163.493 185.147 160.88 193.547 160.88C201.947 160.88 208.573 163.493 213.427 168.72C218.28 173.947 220.707 180.48 220.707 188.32C220.707 196.16 218.28 202.693 213.427 207.92C208.573 213.147 201.947 215.76 193.547 215.76C185.147 215.76 178.52 213.147 173.667 207.92C168.813 202.693 166.387 196.16 166.387 188.32Z" fill="white"></path>
</svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -1 +0,0 @@
<svg fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M22 18v-7h-9v-5h3v-6h-8v6h3v5h-9v7h-2v6h6v-6h-2v-5h7v5h-2v6h6v-6h-2v-5h7v5h-2v6h6v-6z"/></svg>

Before

Width:  |  Height:  |  Size: 184 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-48.9 158.8c.2 2.8.2 5.7.2 8.5 0 86.7-66 186.6-186.6 186.6-37.2 0-71.7-10.8-100.7-29.4 5.3.6 10.4.8 15.8.8 30.7 0 58.9-10.4 81.4-28-28.8-.6-53-19.5-61.3-45.5 10.1 1.5 19.2 1.5 29.6-1.2-30-6.1-52.5-32.5-52.5-64.4v-.8c8.7 4.9 18.9 7.9 29.6 8.3a65.447 65.447 0 0 1-29.2-54.6c0-12.2 3.2-23.4 8.9-33.1 32.3 39.8 80.8 65.8 135.2 68.6-9.3-44.5 24-80.6 64-80.6 18.9 0 35.9 7.9 47.9 20.7 14.8-2.8 29-8.3 41.6-15.8-4.9 15.2-15.2 28-28.8 36.1 13.2-1.4 26-5.1 37.8-10.2-8.9 13.1-20.1 24.7-32.9 34z"/></svg>

Before

Width:  |  Height:  |  Size: 840 B

View File

@@ -1,3 +0,0 @@
<svg width="29" height="29" fill="currentColor">
<path d="M22.05 7.54a4.47 4.47 0 0 0-3.3-1.46 4.53 4.53 0 0 0-4.53 4.53c0 .35.04.7.08 1.05A12.9 12.9 0 0 1 5 6.89a5.1 5.1 0 0 0-.65 2.26c.03 1.6.83 2.99 2.02 3.79a4.3 4.3 0 0 1-2.02-.57v.08a4.55 4.55 0 0 0 3.63 4.44c-.4.08-.8.13-1.21.16l-.81-.08a4.54 4.54 0 0 0 4.2 3.15 9.56 9.56 0 0 1-5.66 1.94l-1.05-.08c2 1.27 4.38 2.02 6.94 2.02 8.3 0 12.86-6.9 12.84-12.85.02-.24 0-.43 0-.65a8.68 8.68 0 0 0 2.26-2.34c-.82.38-1.7.62-2.6.72a4.37 4.37 0 0 0 1.95-2.51c-.84.53-1.81.9-2.83 1.13z"></path>
</svg>

Before

Width:  |  Height:  |  Size: 550 B

View File

@@ -1,21 +0,0 @@
export function VideoIcon(props: any) {
return (
<svg
stroke='currentColor'
fill='currentColor'
strokeWidth='0'
viewBox='0 0 24 24'
height='1em'
width='1em'
xmlns='http://www.w3.org/2000/svg'
{...props}
>
<g>
<path fill='none' d='M0 0h24v24H0z' />
<path
d='M3 3.993C3 3.445 3.445 3 3.993 3h16.014c.548 0 .993.445.993.993v16.014a.994.994 0 0 1-.993.993H3.993A.994.994 0 0 1 3 20.007V3.993zm7.622 4.422a.4.4 0 0 0-.622.332v6.506a.4.4 0 0 0 .622.332l4.879-3.252a.4.4 0 0 0 0-.666l-4.88-3.252z'
/>
</g>
</svg>
);
}

View File

@@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill='currentColor'>
<path d="M19.615 3.184c-3.604-.246-11.631-.245-15.23 0-3.897.266-4.356 2.62-4.385 8.816.029 6.185.484 8.549 4.385 8.816 3.6.245 11.626.246 15.23 0 3.897-.266 4.356-2.62 4.385-8.816-.029-6.185-.484-8.549-4.385-8.816zm-10.615 12.816v-8l8 3.993-8 4.007z"/>
</svg>

Before

Width:  |  Height:  |  Size: 369 B

View File

@@ -1,58 +0,0 @@
import React from 'react';
import { Badge, Flex, Link, Text } from '@chakra-ui/react';
type LinksListItemProps = {
href: string;
title: string;
subtitle: string;
badgeText?: string;
target?: string;
icon?: React.ReactChild;
hideSubtitleOnMobile?: boolean;
};
export function LinksListItem(props: LinksListItemProps) {
const { title, subtitle, badgeText, icon, hideSubtitleOnMobile = false, href, target } = props;
return (
<Link
target={target || '_self'}
href={href}
fontSize={['14px', '14px', '15px']}
py='9px'
d='flex'
flexDirection={['column', 'row', 'row']}
fontWeight={500}
color='gray.600'
alignItems={['flex-start', 'center']}
justifyContent={'space-between'}
sx={{
'@media (hover: none)': {
'&:hover': {
'& .list-item-title': {
transform: 'none'
}
}
}
}}
_hover={{
textDecoration: 'none',
color: 'blue.400',
'& .list-item-title': {
transform: 'translateX(10px)'
}
}}
isTruncated
maxWidth='100%'
>
<Flex alignItems='center' className='list-item-title' transition={'200ms'}>
{icon}
<Text maxWidth={'345px'} isTruncated as='span'>{title}</Text>
{badgeText &&
<Badge pos='relative' top='1px' variant='subtle' colorScheme='green' ml='10px'>{badgeText}</Badge>}
</Flex>
<Text d={[hideSubtitleOnMobile ? 'none' : 'inline', 'inline']} mt={['3px', 0]} as='span'
fontSize={['11px', '11px', '12px']} color='gray.500'>{subtitle}</Text>
</Link>
);
}

View File

@@ -1,21 +0,0 @@
import React from 'react';
import { StackDivider, VStack } from '@chakra-ui/react';
type LinksListProps = {
children: React.ReactNode
};
export function LinksList(props: LinksListProps) {
const { children } = props;
return (
<VStack
rounded='5px'
divider={<StackDivider borderColor='gray.200' />}
spacing={0}
align='stretch'
>
{children}
</VStack>
);
}

View File

@@ -1,20 +0,0 @@
import React from 'react';
// @ts-ignore
import { MDXProvider } from '@mdx-js/react';
import { ChakraProvider } from '@chakra-ui/react';
import MdxComponents from './mdx-components';
import { roadmapTheme } from '../../styles/theme';
type MdRendererType = {
children: React.ReactNode
};
export default function MdRenderer(props: MdRendererType) {
return (
<ChakraProvider theme={roadmapTheme} resetCSS>
<MDXProvider components={MdxComponents}>
{props.children}
</MDXProvider>
</ChakraProvider>
);
};

View File

@@ -1,37 +0,0 @@
import React from 'react';
import styled from 'styled-components';
type EnrichedLinkProps = {
href: string;
children: React.ReactNode;
};
const Link = styled.a`
font-weight: 600;
text-decoration: underline;
`;
const EnrichedLink = (props: EnrichedLinkProps) => {
// Is external URL or is a media URL
const isExternalUrl = /(^http(s)?:\/\/)|(\.(png|svg|jpeg|jpg)$)/.test(
props.href
);
const linkProps: Record<string, string> = {
target: '_self',
...(isExternalUrl
? {
rel: 'nofollow',
target: '_blank',
}
: {}),
};
return (
<Link href={props.href} {...linkProps}>
{props.children}
</Link>
);
};
export default EnrichedLink;

View File

@@ -1,53 +0,0 @@
import React from 'react';
import { Link, Text, Badge } from '@chakra-ui/react';
type BadgeLinkType = {
target: string;
badgeText: string;
href: string;
colorScheme?: string;
children: React.ReactNode;
};
export function BadgeLink(props: BadgeLinkType) {
const {
target = '_blank',
colorScheme = 'purple',
badgeText,
href,
children,
} = props;
// Is external URL or is a media URL
const isExternalUrl = /(^http(s)?:\/\/)|(\.(png|svg|jpeg|jpg)$)/.test(
props.href
);
const linkProps: Record<string, string> = {
...(isExternalUrl
? {
rel: 'nofollow',
}
: {}),
};
return (
<Text mb={'0px'}>
<Link
fontSize="14px"
color="blue.700"
fontWeight={500}
textDecoration="none"
href={href}
target={target}
_hover={{ textDecoration: 'none', color: 'purple.400' }}
{...linkProps}
>
<Badge fontSize="11px" mr="7px" colorScheme={colorScheme}>
{badgeText}
</Badge>
{children}
</Link>
</Text>
);
}

View File

@@ -1,27 +0,0 @@
import styled from 'styled-components';
const BlockQuote = styled.blockquote`
padding: 16px 20px;
position: relative;
background: #e8e8e8;
border-radius: 5px;
margin-bottom: 18px;
h1, h2, h3, h4, h5, h6 {
margin-top: 0;
}
p + h4 {
margin-top: 15px;
}
p {
margin: 0;
& + p {
margin-top: 10px;
}
}
`;
export default BlockQuote;

View File

@@ -1,10 +0,0 @@
import React from 'react';
import { Code as ChakraCode } from '@chakra-ui/react';
type CodeType = {
children: React.ReactNode;
}
export default function Code(props: CodeType) {
return <ChakraCode bg='blue.500'>{props.children}</ChakraCode>;
}

View File

@@ -1,22 +0,0 @@
import { Box, Flex, Heading, Text } from '@chakra-ui/react';
import TreeIcon from '../../icons/tree.svg';
type DedicatedRoadmapProps = {
href: string;
title: string;
description: string;
};
export function DedicatedRoadmap(props: DedicatedRoadmapProps) {
const { href, title, description } = props;
return (
<Flex as={'a'} target='_blank' href={ href } p={5} px={5} mt={6} rounded='md' alignItems='center' _hover={{ bg: 'yellow.400'}} bg='yellow.300'>
<Box d={['none', 'none', 'none', 'block', 'block']} mr={4} height='32px' w='32px' as={TreeIcon} color='gray.900' />
<Box as='span'>
<Heading fontSize='lg' as={'h4'} mb='2px' color='gray.900'>{ title }</Heading>
<Text color='gray.700' as='span' fontSize='md'>{ description }</Text>
</Box>
</Flex>
);
}

View File

@@ -1,81 +0,0 @@
import React from 'react';
import styled from 'styled-components';
import LinkIcon from 'components/icons/link.svg';
const linkify = (Component: React.FunctionComponent<any>) => {
return function EnrichedHeading(props: { children: string }): React.ReactNode {
const text = props.children;
const id = text?.toLowerCase && text
.toLowerCase()
.replace(/[^\x00-\x7F]/g, '')
.replace(/\s+/g, '-')
.replace(/[?!]/g, '');
return (
<Component id={id}>
<HeaderLink href={`#${id}`}>
<LinkIcon />
</HeaderLink>
{props.children}
</Component>
);
};
};
const HeaderLink = styled.a`
position: absolute;
top: 0;
left: -25px;
width: 25px;
display: none;
height: 100%;
align-items: center;
justify-content: flex-start;
`;
const H1 = styled.h1`
position: relative;
font-size: 32px;
line-height: 40px;
font-weight: 700;
margin: 20px 0 10px !important;
&:hover ${HeaderLink} {
display: flex;
}
`;
const H2 = styled(H1).attrs({ as: 'h2' })`
font-size: 30px;
`;
const H3 = styled(H1).attrs({ as: 'h3' })`
margin: 22px 0 8px;
font-size: 28px;
`;
const H4 = styled(H1).attrs({ as: 'h4' })`
margin: 18px 0 8px;
font-size: 24px;
`;
const H5 = styled(H1).attrs({ as: 'h5' })`
margin: 14px 0 8px;
font-size: 18px;
`;
const H6 = styled(H1).attrs({ as: 'h6' })`
margin: 12px 0 8px;
font-size: 18px;
`;
const Headings = {
h1: H1,
h2: H2,
h3: H3,
h4: H4,
h5: H5,
h6: H6
};
export default Headings;

View File

@@ -1,47 +0,0 @@
import styled from 'styled-components';
type IFrameProps = {
title: string;
src: string;
};
const AspectRatioBox = styled.div`
position: relative;
max-width: 100%;
margin-bottom: 18px;
&:before {
height: 0;
content: "";
display: block;
padding-bottom: 50%;
}
& > iframe {
overflow: hidden;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
`;
export default function IFrame(props: IFrameProps) {
return (
<AspectRatioBox>
<iframe
frameBorder={0}
title={props.title}
src={props.src}
allow={'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture'}
allowFullScreen
/>
</AspectRatioBox>
);
}

View File

@@ -1,7 +0,0 @@
import styled from 'styled-components';
export const Img = styled.img`
max-width: 100%;
margin: 25px auto;
display: block;
`;

View File

@@ -1,34 +0,0 @@
import { Code } from '@chakra-ui/react';
import { P } from './p';
import Headings from './heading';
import { Pre } from './pre';
import BlockQuote from './blockquote';
import { Table } from './table';
import IFrame from './iframe';
import { Img } from './img';
import EnrichedLink from './a';
import { BadgeLink } from './badge-link';
import { Li, Ul } from './ul';
import PremiumBlock from './premium-block';
import { ResourceGroupTitle } from './resource-group-title';
import { DedicatedRoadmap } from './dedicated-roadmap';
const MdxComponents = {
p: P,
...Headings,
pre: Pre,
blockquote: BlockQuote,
a: EnrichedLink,
DedicatedRoadmap,
table: Table,
iframe: IFrame,
img: Img,
code: Code,
BadgeLink: BadgeLink,
ResourceGroupTitle: ResourceGroupTitle,
PremiumBlock: PremiumBlock,
ul: Ul,
li: Li
};
export default MdxComponents;

View File

@@ -1,14 +0,0 @@
import React from 'react';
import { Text } from '@chakra-ui/react';
import styled from 'styled-components';
type EnrichedTextType = {
children: React.ReactNode;
}
export const P = styled.p`
line-height: 27px;
font-size: 16px;
color: black;
margin-bottom: 18px;
`;

View File

@@ -1,12 +0,0 @@
import styled from 'styled-components';
export const Pre = styled.pre`
margin: 25px -25px 25px -25px !important;
padding: 20px 25px !important;
border-radius: 10px;
line-height: 1.5 !important;
code {
background: transparent;
}
`;

View File

@@ -1,19 +0,0 @@
import React from 'react';
import { Box, Button, Heading, Text } from '@chakra-ui/react';
import { LockIcon } from '@chakra-ui/icons';
type PremiumBlockProps = {
title: string;
description: string;
};
export default function PremiumBlock(props: PremiumBlockProps) {
return (
<Box p='40px' textAlign='center' rounded='5px' mb='18px' bg='gray.50' borderWidth={1}>
<LockIcon color='gray.300' height='45px' w='45px' mb='18px' />
<Heading as='h3' fontSize='30px' mb='10px'>{props.title}</Heading>
<Text mb='18px'>{props.description}</Text>
<Button colorScheme='green'>Become a Member</Button>
</Box>
);
}

View File

@@ -1,12 +0,0 @@
import React from 'react';
import { Heading } from '@chakra-ui/react';
type ResourceGroupTitleProps = {
children: React.ReactNode;
};
export function ResourceGroupTitle(props: ResourceGroupTitleProps) {
const { children } = props;
return <Heading mt='20px' color='gray.800' fontSize='14px' pb='5px' borderBottomWidth={1} textTransform='uppercase' as="h2" mb={'10px'}>{children}</Heading>;
}

View File

@@ -1,25 +0,0 @@
import styled from 'styled-components';
export const Table = styled.table`
border-collapse: separate;
width: 100%;
border-spacing: 0;
margin: 20px 0;
th {
color: #666;
font-size: 12px;
font-weight: 400;
background: #FAFAFA;
text-transform: uppercase;
height: 40px;
vertical-align: middle;
padding: 5px 10px;
}
td {
font-size: 14px;
padding: 10px;
border-bottom: 1px solid #EAEAEA;
}
`;

View File

@@ -1,16 +0,0 @@
import React from 'react';
import { UnorderedList } from '@chakra-ui/react';
import styled from 'styled-components';
export const Ul = styled.ul`
margin-left: 40px;
margin-bottom: 18px;
ul {
margin-top: 18px;
}
`;
export const Li = styled.li`
margin-bottom: 7px;
`;

View File

@@ -1,29 +0,0 @@
import { Box, Container, Heading, Link, Text } from '@chakra-ui/react';
export function OpensourceBanner() {
return (
<Box bg='white' borderTopWidth={1} py={['45px', '45px', '70px']} textAlign='center'>
<Container maxW='container.sm'>
<Heading fontSize={['25px', '25px', '35px']} mb={['10px', '10px', '20px']}>Open Source</Heading>
<Text lineHeight='26px' fontSize={['15px', '15px', '16px']} mb='20px'>The project is OpenSource,&nbsp;
<Link
_hover={{ textDecoration: 'none' }}
href='https://github.com/search?o=desc&q=stars%3A%3E100000&s=stars&type=Repositories'
target='_blank'
borderBottomWidth={1}
fontWeight={600}
>6th most starred project on GitHub</Link> and is visited by hundreds of thousands of
developers every month.</Text>
<iframe
src='https://ghbtns.com/github-btn.html?user=kamranahmedse&repo=developer-roadmap&type=star&count=true&size=large'
frameBorder='0'
scrolling='0'
width='170'
height='30'
style={{ margin: 'auto' }}
title='GitHub'
/>
</Container>
</Box>
);
}

View File

@@ -1,37 +0,0 @@
import { Box, Container, Heading, Text } from '@chakra-ui/react';
import React from 'react';
type PageHeaderProps = {
title: string;
subtitle: string;
children?: React.ReactNode;
beforeTitle?: React.ReactNode;
};
export function PageHeader(props: PageHeaderProps) {
const { title, subtitle, children, beforeTitle = null } = props;
return (
<Box pt={['25px', '20px', '45px']} pb={['20px', '15px', '30px']} borderBottomWidth={1} mb='30px'>
<Container maxW='container.md' position='relative'>
{beforeTitle}
<Heading
as='h1'
color='black'
fontSize={['28px', '33px', '40px']}
fontWeight={700}
mb={['2px', '2px', '5px']}
>
{title}
</Heading>
<Text fontSize={['13px', '14px', '15px']}>{subtitle}</Text>
</Container>
{children && (
<Container maxW='container.md'>
{children}
</Container>
)}
</Box>
);
}

View File

@@ -1,16 +0,0 @@
import React from 'react';
import { Box } from '@chakra-ui/react';
type PageWrapperProps = {
children: React.ReactNode;
}
export function PageWrapper(props: PageWrapperProps) {
const { children } = props;
return (
<Box bgColor='brand.bg' bgImage='url(/bg.jpg)' bgRepeat='no-repeat' bgSize='100%' w='100%' minH='100vh'>
{ children }
</Box>
);
}

View File

@@ -1,80 +0,0 @@
import { Badge, Box, Button, Container, Link, Stack, Text } from '@chakra-ui/react';
import { RoadmapType } from '../lib/roadmap';
type RelatedRoadmapsProps = {
roadmaps: RoadmapType[];
};
const colorsList = [
'gray.700',
'purple.700',
'blue.700',
'red.700',
'green.700',
'teal.700',
'yellow.700',
'cyan.700',
'pink.700'
];
const roadmapTitleMapping: Record<string, string> = {
"Software Design and Architecture": "Software Design",
}
export function RelatedRoadmaps(props: RelatedRoadmapsProps) {
const { roadmaps } = props;
if (!roadmaps.length) {
return null;
}
return (
<Box borderTopWidth={1} bgColor='gray.50' pb='35px' pt='5px'>
<Container maxW='container.md'>
<Box display='flex' position='relative' top='-23px' alignItems='center' justifyContent='space-between'>
<Text textAlign='center' borderWidth={1} bg='white' p='4px' fontWeight='bold' rounded='md' px={'15px'}>
Related Roadmaps
</Text>
<Button as={Link} variant='outline' bg='white' size='sm' _hover={{ textDecoration: 'none', bg: 'gray.100' }}
href='/'>
<Text as='span' display={['inline', 'none', 'none']}>More &rarr;</Text>
<Text as='span' display={['none', 'inline', 'inline']}>All Roadmaps &rarr;</Text>
</Button>
</Box>
<Stack spacing='5px'>
{roadmaps.map((roadmap, counter) => (
<Link
href={`/${roadmap.id}`}
key={roadmap.id}
borderWidth={1}
borderColor='blue.100'
py='7px'
px='14px'
rounded='md'
bg='white'
textDecoration={'none'}
_hover={{ bg: 'gray.100', borderColor: 'blue.200' }}
bgGradient='linear(to-r, white, gray.50)'
display='flex'
alignItems='center'
flexDir={['column', 'row', 'row']}
>
<Text
color={colorsList[counter]}
as='span'
fontWeight='bold'
display={['inline-block']}
minWidth='150px'
mr='10px'
>
{roadmapTitleMapping[roadmap.featuredTitle] || roadmap.featuredTitle}
</Text>
<Text as='span' display={['block', 'inline']} isTruncated maxWidth='100%' fontSize={['sm', 'sm', 'md']} color='gray.700'>{roadmap.featuredDescription}</Text>
</Link>
))}
</Stack>
</Container>
</Box>
);
}

View File

@@ -1,131 +0,0 @@
import { Box, Button, Flex, Text } from '@chakra-ui/react';
import { RemoveScroll } from 'react-remove-scroll';
import { RoadmapType } from '../../lib/roadmap';
import RoadmapGroup from '../../pages/[roadmap]/[group]';
import { CheckIcon, CloseIcon, RepeatIcon } from '@chakra-ui/icons';
import { queryGroupElementsById } from '../../lib/renderer';
type ContentDrawerProps = {
roadmap: RoadmapType;
groupId: string;
onClose?: () => void;
};
export function markTopicDone(groupId: string) {
localStorage.setItem(groupId, 'done');
queryGroupElementsById(groupId).forEach((item) =>
item?.classList?.add('done')
);
}
export function markTopicPending(groupId: string) {
localStorage.removeItem(groupId);
queryGroupElementsById(groupId).forEach((item) =>
item?.classList?.remove('done')
);
}
export function isTopicDone(groupId: string) {
return localStorage.getItem(groupId) === 'done';
}
export function ContentDrawer(props: ContentDrawerProps) {
const { roadmap, groupId, onClose = () => null } = props;
if (!groupId) {
return null;
}
const isDone = isTopicDone(groupId);
return (
<Box zIndex={99999} pos="relative">
<Box
onClick={onClose}
pos="fixed"
top={0}
left={0}
right={0}
bottom={0}
bg="black"
opacity={0.4}
/>
<RemoveScroll allowPinchZoom>
<Box
p="0px 30px 30px"
position="fixed"
w={['100%', '60%', '40%']}
bg="white"
top={0}
right={0}
bottom={0}
borderLeftWidth={'1px'}
overflowY="scroll"
>
<Flex
mt="20px"
justifyContent="space-between"
alignItems="center"
zIndex={1}
>
{!isDone && (
<Button
onClick={() => {
markTopicDone(groupId);
onClose();
}}
colorScheme="green"
leftIcon={<CheckIcon />}
size="xs"
iconSpacing={0}
>
<Text
as="span"
d={['block', 'none', 'none', 'block']}
ml="10px"
>
Mark as Done
</Text>
</Button>
)}
{isDone && (
<Button
onClick={() => {
markTopicPending(groupId);
onClose();
}}
colorScheme="red"
leftIcon={<RepeatIcon />}
size="xs"
iconSpacing={0}
>
<Text
as="span"
d={['block', 'none', 'none', 'block']}
ml="10px"
>
Mark as Pending
</Text>
</Button>
)}
<Button
onClick={onClose}
colorScheme="yellow"
ml="5px"
leftIcon={<CloseIcon width="8px" />}
iconSpacing={0}
size="xs"
>
<Text as="span" d={['none', 'none', 'none', 'block']} ml="10px">
Close
</Text>
</Button>
</Flex>
<RoadmapGroup isOutlet roadmap={roadmap} group={groupId} />
</Box>
</RemoveScroll>
</Box>
);
}

View File

@@ -1,39 +0,0 @@
import React from 'react';
import { Box, Button, Divider, Link, Text } from '@chakra-ui/react';
type EditContentPageLinkProps = {
href: string;
};
export function EditContentPageLink(props: EditContentPageLinkProps) {
const { href } = props;
return (
<Box my='30px'>
<Divider mb="15px" orientation="horizontal" />
<Text
lineHeight="23px"
fontWeight={500}
fontSize="14px"
color="gray.500"
mb="10px"
>
This page is a work in progress. Help us by writing a small
introduction to the topic and suggesting a few links to read more
about this topic.
</Text>
<Button
size="sm"
py="20px"
as={Link}
href={href}
target="_blank"
isFullWidth
colorScheme={'gray'}
_hover={{ textDecoration: 'none', bg: 'gray.200' }}
>
Edit this Page
</Button>
</Box>
);
}

View File

@@ -1,121 +0,0 @@
import { Badge, Box, Flex, Heading, Link, Text, Tooltip } from '@chakra-ui/react';
import { InfoIcon } from '@chakra-ui/icons';
type RoadmapGridItemProps = {
title: string;
subtitle: string;
isCommunity?: boolean;
isUpcoming?: boolean;
colorIndex?: number;
isNew?: boolean;
url: string;
};
const bgColorList = [
'red.100',
'yellow.100',
'green.200',
'teal.200',
'blue.200',
'red.200',
'gray.200',
'teal.200',
'yellow.100',
'green.200',
'red.200'
];
export function HomeRoadmapItem(props: RoadmapGridItemProps) {
const {
title,
subtitle,
isCommunity,
isNew,
colorIndex = 0,
url,
isUpcoming
} = props;
return (
<Box
position='relative'
as={Link}
href={url}
_hover={{
textDecoration: 'none',
bg: 'rgba(255,255,255,.10)'
}}
sx={{
// On mobile devices, don't change the scale
'@media (hover: none)': {
'&:hover': {
bg: 'rgba(255,255,255,.05)'
}
}
}}
flex={1}
shadow='2xl'
className={'home-roadmap-item'}
bg={'rgba(255,255,255,.05)'}
color='white'
p='15px'
rounded='10px'
pos='relative'
>
{isCommunity && (
<Tooltip label={'Community contribution'} hasArrow placement='top'>
<InfoIcon opacity={0.5} position='absolute' top='10px' right='10px' />
</Tooltip>
)}
<Heading
fontSize={['17px', '17px', '22px']}
color={bgColorList[colorIndex]}
mb='5px'
d='flex'
alignItems='center'
>
{title}
{ isNew && <Badge position='absolute' bottom={0} right={0} colorScheme='yellow' ml='10px'>New</Badge> }
</Heading>
<Text color='gray.200' fontSize={['13px']}>
{subtitle}
</Text>
{isUpcoming && (
<Flex
alignItems='center'
justifyContent='center'
pos='absolute'
left={0}
right={0}
top={0}
bottom={0}
rounded='10px'
>
<Text
color='white'
bg='gray.600'
zIndex={1}
fontWeight={600}
p={'5px 10px'}
rounded='10px'
>
Upcoming
</Text>
<Box
bg={'black'}
pos='absolute'
top={0}
left={0}
right={0}
bottom={0}
rounded={'10px'}
opacity={0.5}
/>
</Flex>
)}
</Box>
);
}

View File

@@ -1,50 +0,0 @@
import { Badge, Link, Text } from '@chakra-ui/react';
import siteConfig from '../../content/site.json';
import { event } from '../../lib/gtag';
import React from 'react';
export function NewAlertBanner() {
return (
<Text
_hover={{
textDecoration: 'none',
color: 'blue.700',
'& .new-badge': { bg: 'blue.700' },
}}
as={Link}
href={siteConfig.url.youtube}
d="block"
target="_blank"
color="red.700"
fontSize="sm"
mb="10px"
fontWeight={500}
onClick={() =>
event({
category: 'Subscription',
action: 'Clicked the YouTube banner',
label: 'YouTube Alert on Roadmap',
})
}
>
<Badge
transition={'all 300ms'}
className="new-badge"
mr="7px"
colorScheme="red"
variant="solid"
>
New
</Badge>
<Text textDecoration="underline" as="span" d={['none', 'inline']}>
Roadmap topics to be covered on our YouTube Channel
</Text>
<Text textDecoration="underline" as="span" d={['inline', 'none']}>
Topic videos being made on YouTube
</Text>
<Text as="span" ml="5px">
&raquo;
</Text>
</Text>
);
}

View File

@@ -1,26 +0,0 @@
import { RoadmapType } from '../../lib/roadmap';
import { Container, Heading, Link, Text } from '@chakra-ui/react';
import siteConfig from '../../content/site.json';
type RoadmapProps = {
roadmap: RoadmapType;
};
export function RoadmapError(props: RoadmapProps) {
const { roadmap } = props;
return (
<Container
bg={'red.600'}
maxW={'container.md'}
position="relative"
mt="50px"
p='20px'
rounded='5px'
color='white'
>
<Heading mb='4px' size='md'>Oops! There&apos;s an error</Heading>
<Text>Try refreshing or <Link target='_blank' fontWeight={700} textDecoration={'underline'} fontSize='14px' href={siteConfig.url.issue}>report a bug</Link> and use the <Link fontWeight={700} textDecoration={'underline'} href={`/roadmaps/${roadmap.id}.png`}>non-interactive version</Link></Text>
</Container>
);
}

View File

@@ -1,89 +0,0 @@
import { Badge, Box, Flex, Heading, Link, Text, Tooltip } from '@chakra-ui/react';
import { InfoIcon } from '@chakra-ui/icons';
type RoadmapGridItemProps = {
title: string;
subtitle: string;
href: string;
isCommunity?: boolean;
isUpcoming?: boolean;
colorIndex?: number;
};
const bgColorList = [
'gray.900',
'purple.900',
'blue.900',
'red.900',
'green.900',
'teal.900',
'yellow.900',
'cyan.900',
'pink.900',
'gray.800',
'purple.800',
'blue.800',
'red.800',
'green.800',
'teal.800',
'yellow.800',
'cyan.800',
'pink.800',
'gray.700',
'purple.700',
'blue.700',
'red.700',
'green.700',
'teal.700',
'yellow.700',
'cyan.700',
'pink.700',
'gray.600',
'purple.600',
'blue.600',
'red.600',
'green.600',
'teal.600',
'yellow.600',
'cyan.600',
'pink.600'
];
export function RoadmapGridItem(props: RoadmapGridItemProps) {
const { title, subtitle, isCommunity = false, isUpcoming = false, colorIndex = 0, href = '/' } = props;
return (
<Box _hover={{ textDecoration: 'none', transform: 'scale(1.02)' }} as={Link} href={href} shadow='xl' p='20px'
rounded='10px' bg={bgColorList[colorIndex] ?? bgColorList[0]} flex={1} pos='relative'>
{isCommunity && (
<Tooltip label={'Community contribution'} hasArrow placement='top'>
<InfoIcon opacity={0.5} color='gray.100' position='absolute' top='10px' right='10px' />
</Tooltip>
)}
<Heading color='white' mb={'6px'} fontSize='20px'>{title}</Heading>
<Text color='gray.300' fontSize='14px'>{subtitle}</Text>
{isUpcoming && (
<Flex
alignItems='center'
justifyContent='center'
pos='absolute'
left={0}
right={0}
top={0}
bottom={0}
rounded='10px'
>
<Text color='white' bg='yellow.900' zIndex={1} fontWeight={600} p={'5px 10px'}
rounded='10px'>Upcoming</Text>
<Box bg={'black'} pos='absolute' top={0} left={0} right={0} bottom={0} rounded={'10px'} opacity={0.5} />
</Flex>
)}
</Box>
);
}

View File

@@ -1,20 +0,0 @@
import { Container, Spinner } from '@chakra-ui/react';
export function RoadmapLoader() {
return (
<Container
maxW={'container.md'}
position="relative"
mt="60px"
textAlign="center"
>
<Spinner
thickness="7px"
speed="0.65s"
emptyColor="gray.200"
color="gray.500"
size="xl"
/>
</Container>
);
}

View File

@@ -1,223 +0,0 @@
import siteConfig from '../../content/site.json';
import { isInteractiveRoadmap, RoadmapType } from '../../lib/roadmap';
import { NewAlertBanner } from './new-alert-banner';
import {
Badge,
Box,
Button,
Container,
Flex,
Heading,
Input,
Link,
Modal,
ModalBody,
ModalCloseButton,
ModalContent,
ModalOverlay,
Stack,
Text,
useDisclosure
} from '@chakra-ui/react';
import { AtSignIcon, ChatIcon, DownloadIcon } from '@chakra-ui/icons';
import React from 'react';
import { SIGNUP_EMAIL_INPUT_NAME, SIGNUP_FORM_ACTION } from '../../pages/signup';
import { event } from '../../lib/gtag';
import { TNSAlert } from './tns-alert';
type RoadmapPageHeaderType = {
roadmap: RoadmapType;
};
function RoadmapDownloader({ roadmapTitle }: { roadmapTitle: string }) {
const { isOpen, onOpen, onClose } = useDisclosure();
const initialRef = React.useRef(null);
return (
<>
<Button
onClick={(e) => {
event({
category: 'Subscription',
action: `Clicked Download ${roadmapTitle} Roadmap`,
label: `Download ${roadmapTitle} Roadmap Button`
});
onOpen();
}}
size='xs'
py='14px'
px='10px'
leftIcon={<DownloadIcon />}
display={['none', 'flex']}
colorScheme='yellow'
variant='solid'
_hover={{ textDecoration: 'none' }}
_focus={{ boxShadow: 'none' }}
>
Download
</Button>
<Modal initialFocusRef={initialRef} closeOnOverlayClick={true} isOpen={isOpen} onClose={onClose} isCentered motionPreset='none'>
<ModalOverlay />
<ModalContent>
<ModalCloseButton />
<ModalBody p={6}>
<Heading mb='5px' fontSize='2xl'>Download Roadmap</Heading>
<Text fontSize={'md'} color='gray.700'>Enter your email below to receive the download link.</Text>
<form action={SIGNUP_FORM_ACTION} method='post' target='_blank' onSubmit={() => {
event({
category: 'Subscription',
action: `Submitted Download ${roadmapTitle} Roadmap Email`,
label: `PDF / Subscribe ${roadmapTitle} Roadmap`
});
onClose();
}}>
<Input required ref={initialRef} size='md' my='10px' type='email' placeholder='Email address' name={SIGNUP_EMAIL_INPUT_NAME} />
<Button type='submit' colorScheme='green' size='md' width={'full'}>Send Link</Button>
</form>
</ModalBody>
</ModalContent>
</Modal>
</>
);
}
function RoadmapSubscriber({ roadmapTitle }: { roadmapTitle: string }) {
const { isOpen, onOpen, onClose } = useDisclosure();
const initialRef = React.useRef(null);
return (
<>
<Button
onClick={(e) => {
event({
category: 'Subscription',
action: `Clicked Subscribe ${roadmapTitle} Roadmap`,
label: `Subscribe ${roadmapTitle} Roadmap Button`
});
onOpen();
}}
size='xs'
py='14px'
px='10px'
leftIcon={<AtSignIcon />}
display={'flex'}
colorScheme='yellow'
variant='solid'
_hover={{ textDecoration: 'none' }}
_focus={{ boxShadow: 'none' }}
>
Subscribe
</Button>
<Modal initialFocusRef={initialRef} closeOnOverlayClick={true} isOpen={isOpen} onClose={onClose} isCentered motionPreset='none'>
<ModalOverlay />
<ModalContent>
<ModalCloseButton />
<ModalBody p={6}>
<Heading mb='5px' fontSize='2xl'>Subscribe</Heading>
<Text fontSize={'md'} color='gray.700'>Enter your email below to receive updates to this roadmap.</Text>
<form action={SIGNUP_FORM_ACTION} method='post' target='_blank' onSubmit={() => {
event({
category: 'Subscription',
action: `Submitted Subscribe ${roadmapTitle} Roadmap Email`,
label: `Email / Subscribe ${roadmapTitle} Roadmap`
});
onClose();
}}>
<Input required ref={initialRef} size='md' my='10px' type='email' placeholder='Email address' name={SIGNUP_EMAIL_INPUT_NAME} />
<Button type='submit' colorScheme='green' size='md' width={'full'}>Subscribe</Button>
</form>
</ModalBody>
</ModalContent>
</Modal>
</>
);
}
export function RoadmapPageHeader(props: RoadmapPageHeaderType) {
const { roadmap } = props;
const hasTNSAlert = ['frontend', 'backend', 'devops'].includes(roadmap.id);
return (
<Box
pt={['25px', '20px', '45px']}
pb={['20px', '15px', '30px']}
borderBottomWidth={1}
mb='50px'
>
<Container maxW='container.md' position='relative'>
<NewAlertBanner />
<Heading
as='h1'
color='black'
fontSize={['28px', '33px', '40px']}
fontWeight={700}
mb={['2px', '2px', '5px']}
>
{roadmap.title}
</Heading>
<Text fontSize={['13px', '14px', '15px']}>{roadmap.description}</Text>
<Flex justifyContent='space-between' alignItems={'center'} mt='20px'>
<Stack isInline flex={1}>
<Button
display={['flex', 'flex']}
as={Link}
href={'/roadmaps'}
size='xs'
py='14px'
px='10px'
colorScheme='teal'
variant='solid'
_hover={{ textDecoration: 'none' }}
>
&larr;
<Text as='span' display={['none', 'inline']} ml='5px'>
All Roadmaps
</Text>
</Button>
<RoadmapDownloader roadmapTitle={roadmap.featuredTitle} />
<RoadmapSubscriber roadmapTitle={roadmap.featuredTitle} />
<Box flex={1} justifyContent='flex-end' display='flex'>
<Button
as={Link}
href={`${siteConfig.url.issue}?title=[Suggestion] ${roadmap.title}`}
target='_blank'
size='xs'
py='14px'
px='10px'
colorScheme='green'
leftIcon={<ChatIcon />}
_hover={{ textDecoration: 'none' }}
>
Suggest Changes
</Button>
</Box>
</Stack>
</Flex>
{isInteractiveRoadmap(roadmap.id) && (
<Box mt='30px' mb={hasTNSAlert ? ['-53px', '-48px', '-63px'] : ['-37px', '-32px', '-47px']} borderWidth={1} rounded='3px'>
{ hasTNSAlert && <TNSAlert roadmapName={roadmap.featuredTitle} />}
<Text
fontWeight={500}
fontSize='14px'
bg='white'
p='5px 7px'
rounded='3px'
>
<Badge pos='relative' top={'-1px'} mr='6px' colorScheme='yellow'>
New
</Badge>
Resources are here, try clicking any nodes.
</Text>
</Box>
)}
</Container>
</Box>
);
}

View File

@@ -1,52 +0,0 @@
import { Box, Link, Text } from '@chakra-ui/react';
import { ExternalLinkIcon } from '@chakra-ui/icons';
import React from 'react';
import { event } from '../../lib/gtag';
type TNSAlertProps = {
roadmapName: string;
};
export function TNSAlert(props: TNSAlertProps) {
const { roadmapName } = props;
return (
<Text
fontWeight={500}
fontSize='14px'
bg='gray.100'
p='5px 7px'
rounded='2px 2px 0 0'
borderBottomWidth={1}
>
<Box as='span' display={['none', 'none', 'inline']}>Get the latest {roadmapName} news from our sister site&nbsp;
<Link
href={'https://thenewstack.io?utm_source=roadmap-sh&utm_medium=Referral&utm_campaign=Banner'}
target='_blank' textDecoration='underline'
onClick={() => {
event({
category: 'PartnerClick',
action: `TNS Referral`,
label: `TNS Referral - ${roadmapName}`,
});
}}
fontWeight={600}>TheNewStack.io <ExternalLinkIcon />
</Link>
</Box>
<Box as='span' display={['inline', 'inline', 'none']}>Get latest {roadmapName} news on &nbsp;
<Link
href={'https://thenewstack.io?utm_source=roadmap-sh&utm_medium=Referral&utm_campaign=Banner'}
target='_blank' textDecoration='underline'
onClick={() => {
event({
category: 'PartnerClick',
action: `TNS Referral`,
label: `TNS Referral - ${roadmapName}`,
});
}}
fontWeight={600}>TheNewStack.io <ExternalLinkIcon />
</Link>
</Box>
</Text>
);
}

View File

@@ -1,43 +0,0 @@
import { Box, Flex, Link } from '@chakra-ui/react';
import HackerNewsIcon from 'components/icons/hackernews-square.svg';
import FacebookIcon from 'components/icons/facebook-square.svg';
import TwitterIcon from 'components/icons/twitter-square.svg';
import RedditIcon from 'components/icons/reddit-square.svg';
import { Icon } from '@chakra-ui/icons';
import { getFacebookShareUrl, getHnShareUrl, getRedditShareUrl, getTwitterShareUrl } from '../lib/url';
import { useEffect, useState } from 'react';
type ShareIconProps = {
text: string;
url: string;
}
export function ShareIcons(props: ShareIconProps) {
const { text, url } = props;
const [offset, setOffset] = useState(0);
useEffect(() => {
const onScroll = () => setOffset(window.scrollY);
window.removeEventListener('scroll', onScroll);
window.addEventListener('scroll', onScroll, { passive: true });
return () => window.removeEventListener('scroll', onScroll);
}, []);
if (offset <= 100) {
return null;
}
return (
<Box pos='absolute' left={'-15px'} top={'190px'} height='100%' display={['none', 'none', 'none', 'block']}>
<Flex pos='sticky' top='100px' flexDir='column'>
<Link target='_blank' color='gray.500' href={getTwitterShareUrl({ url, text })} _hover={{ color: "gray.700" }}><Icon fill='currentColor' height='24px' width='24px' as={TwitterIcon} /></Link>
<Link target='_blank' color='gray.500' href={getFacebookShareUrl({ url, text })} _hover={{ color: "gray.700" }}><Icon fill='currentColor' height='24px' width='24px' as={FacebookIcon} /></Link>
<Link target='_blank' color='gray.500' href={getHnShareUrl({ url, text })} _hover={{ color: "gray.700" }}><Icon fill='currentColor' height='24px' width='24px' as={HackerNewsIcon} /></Link>
<Link target='_blank' color='gray.500' href={getRedditShareUrl({ text, url })} _hover={{ color: "gray.700" }}><Icon fill='currentColor' height='24px' width='24px' as={RedditIcon} /></Link>
</Flex>
</Box>
);
}

View File

@@ -1,33 +0,0 @@
import { Flex, Link, Text } from '@chakra-ui/react';
import YouTubeLogo from '../components/icons/youtube.svg';
import siteConfig from '../content/site.json';
import { event } from '../lib/gtag';
export function StickyBanner() {
return (
<Flex as={Link}
href={siteConfig.url.youtube}
bg={'yellow.200'}
color='gray.900'
alignItems='center'
position='sticky'
top={0}
zIndex={999}
justifyContent='center'
py='8px'
_hover={{ textDecoration: 'none', bg: 'yellow.400' }}
target='_blank'
onClick={() => event({
category: 'Subscription',
action: 'Clicked the YouTube banner',
label: 'Sticky YouTube banner on Top'
})}
>
<YouTubeLogo style={{ height: '20px', display: 'inline-block', marginRight: '7px' }} />
<Text as='span' fontWeight={500} fontSize='14px'>
<Text as='span'>We now have a YouTube Channel. <Text as='span' d={['none', 'inline']}>Subscribe for the video
content.</Text></Text>
</Text>
</Flex>
);
}

View File

@@ -1,22 +0,0 @@
import { Box, Button, Container, Heading, Link, Text } from '@chakra-ui/react';
import { event } from '../lib/gtag';
export function TeamsBanner() {
return null;
return (
<Box bg='teal.500' borderTopWidth={1} py={['45px', '45px', '70px']} textAlign='center'>
<Container maxW='container.sm'>
<Heading as='h4' color={'white'} fontSize={['25px', '25px', '35px']} mb={['10px', '10px', '20px']}>Roadmaps for Teams</Heading>
<Text lineHeight='26px' color={'white'} fontSize={['15px', '15px', '18px']} mb='20px'>We are working on a solution for teams. Help us shape the platform!</Text>
<Button onClick={() => {
event({
category: 'UpcomingFeatureClick',
action: `Teams Form Redirect`,
label: `Click Teams Footer Link`
});
}} target={'_blank'} as={Link} href='https://forms.gle/6X2matbCmjmvYGGt6' _hover={{textDecoration: 'none', bg: 'gray.300'}}>Take a Survey</Button>
</Container>
</Box>
);
}

View File

@@ -1,69 +0,0 @@
import { Badge, Box, Heading, Link, Text } from '@chakra-ui/react';
type VideoGridItemProps = {
href: string;
title: string;
subtitle: string;
date: string;
target?: string;
isNew?: boolean;
colorIndex?: number;
};
const bgColorList = [
'gray.900',
'purple.900',
'blue.900',
'red.900',
'green.900',
'teal.900',
'yellow.900',
'cyan.900',
'pink.900',
'gray.800',
'purple.800',
'blue.800',
'red.800',
'green.800',
'teal.800',
'yellow.800',
'cyan.800',
'pink.800',
'gray.700',
'purple.700',
'blue.700',
'red.700',
'green.700',
'teal.700',
'yellow.700',
'cyan.700',
'pink.700',
'gray.600',
'purple.600',
'blue.600',
'red.600',
'green.600',
'teal.600',
'yellow.600',
'cyan.600',
'pink.600'
];
export function VideoGridItem(props: VideoGridItemProps) {
const { title, subtitle, date, isNew = false, colorIndex = 0, href, target } = props;
return (
<Box _hover={{ textDecoration: 'none', transform: 'scale(1.02)' }} as={Link} href={ href } target={target || '_self'} shadow='xl' p='20px'
rounded='10px' bg={bgColorList[colorIndex] ?? bgColorList[0]} flex={1}>
<Text mb='7px' fontSize='12px' color='gray.400'>
{isNew && <Badge colorScheme={'green'} mr='10px'>New</Badge>}
{date}
</Text>
<Heading color='white' mb={'6px'} fontSize='20px' lineHeight={'28px'}>{title}</Heading>
<Text color='gray.300' fontSize='14px'>{subtitle}</Text>
</Box>
);
}

View File

@@ -1,49 +0,0 @@
[
{
"username": "kamranahmedse",
"name": "Kamran Ahmed",
"twitter": "kamranahmedse",
"picture": "/authors/kamranahmedse.jpeg",
"bio": "Lead engineer at Tajawal. Lover of all things web and opensource. Created roadmap.sh to help the confused ones."
},
{
"username": "jesse",
"name": "Jesse Li",
"twitter": "__jesse_li",
"picture": "/authors/jesse.png",
"bio": "Software engineer."
},
{
"username": "dmytrobol",
"name": "Dmytro Bolkachov",
"twitter": "dmytrobol",
"picture": "/authors/dmytrobol.png",
"bio": "JavaScript Lad, Movie buff and coder interested in everything web related"
},
{
"username": "spekulatius",
"name": "Peter Thaleikis",
"twitter": "spekulatius1984",
"picture": "/authors/spekulatius.jpg",
"bio": "Developer building side-projects for fun, lover of the web and open source"
},
{
"username": "ebrahimbharmal007",
"name": "Ebrahim Bharmal",
"twitter": "BharmalEbrahim",
"picture": "/authors/ebrahimbharmal007.png",
"bio": "Love building projects using tools completely new to me. Python forever. Senior at University of Texas at Arlington (2021)"
},
{
"username": "lesovsky",
"name": "Alexey Lesovsky",
"bio": "Linux system administrator and PostgreSQL DBA at DataEgret.",
"picture": "/authors/lesovsky.jpeg"
},
{
"username": "danielgruesso",
"name": "Daniel Gruesso",
"bio": "Product manager working on blockchain and smart contracts developer tools",
"picture": "/authors/danielgruesso.jpg"
}
]

View File

@@ -1,314 +0,0 @@
[
{
"id": "session-based-authentication",
"title": "Session Based Authentication",
"description": "Learn what is Session Based Authentication and how to implement it in Node.js",
"isNew": true,
"type": "textual",
"authorUsername": "kamranahmedse",
"updatedAt": "2022-11-01T19:59:14.191Z",
"createdAt": "2022-11-01T19:59:14.191Z"
},
{
"id": "http-basic-authentication",
"title": "HTTP Basic Authentication",
"description": "Learn what is HTTP Basic Authentication and how to implement it in Node.js",
"isNew": true,
"type": "textual",
"authorUsername": "kamranahmedse",
"updatedAt": "2022-10-03T19:59:14.191Z",
"createdAt": "2022-10-03T19:59:14.191Z"
},
{
"id": "basics-of-authentication",
"title": "Basics of Authentication",
"description": "Learn the basics of Authentication and Authorization",
"isNew": false,
"type": "textual",
"authorUsername": "kamranahmedse",
"updatedAt": "2022-09-21T19:59:14.191Z",
"createdAt": "2022-09-21T19:59:14.191Z"
},
{
"id": "avoid-render-blocking-javascript-with-async-defer",
"title": "Async and Defer Script Loading",
"description": "Learn how to avoid render blocking JavaScript using async and defer scripts.",
"isNew": false,
"type": "visual",
"authorUsername": "kamranahmedse",
"updatedAt": "2021-09-10T19:59:14.191Z",
"createdAt": "2021-09-10T19:59:14.191Z"
},
{
"id": "what-are-web-vitals",
"title": "What are Web Vitals?",
"description": "Learn what are the core web vitals and how to measure them.",
"isNew": false,
"type": "visual",
"authorUsername": "kamranahmedse",
"updatedAt": "2021-09-05T19:59:14.191Z",
"createdAt": "2021-09-05T19:59:14.191Z"
},
{
"id": "what-is-sli-slo-sla",
"title": "SLIs, SLOs and SLAs",
"description": "Learn what are different indicators for performance identification of any service.",
"isNew": false,
"type": "visual",
"authorUsername": "kamranahmedse",
"updatedAt": "2021-08-31T19:59:14.191Z",
"createdAt": "2021-08-31T19:59:14.191Z"
},
{
"id": "ci-cd",
"title": "What is CI and CD?",
"description": "Learn the basics of CI/CD and how to implement that with GitHub Actions.",
"isNew": false,
"type": "visual",
"authorUsername": "kamranahmedse",
"updatedAt": "2021-07-09T19:59:14.191Z",
"createdAt": "2021-07-09T19:59:14.191Z"
},
{
"id": "sso",
"title": "SSO — Single Sign On",
"description": "Learn the basics of SAML and understand how does Single Sign On work.",
"isNew": false,
"type": "visual",
"authorUsername": "kamranahmedse",
"updatedAt": "2021-07-01T19:59:14.191Z",
"createdAt": "2021-07-01T19:59:14.191Z"
},
{
"id": "oauth",
"title": "OAuth — Open Authorization",
"description": "Learn and understand what is OAuth and how it works",
"isNew": false,
"type": "visual",
"authorUsername": "kamranahmedse",
"updatedAt": "2021-06-28T19:59:14.191Z",
"createdAt": "2021-06-28T19:59:14.191Z"
},
{
"id": "jwt-authentication",
"title": "JWT Authentication",
"description": "Understand what is JWT authentication and how is it implemented",
"isNew": false,
"type": "visual",
"authorUsername": "kamranahmedse",
"updatedAt": "2021-06-20T19:59:14.191Z",
"createdAt": "2021-06-20T19:59:14.191Z"
},
{
"id": "token-authentication",
"title": "Token Based Authentication",
"description": "Understand what is token based authentication and how it is implemented",
"isNew": false,
"type": "visual",
"authorUsername": "kamranahmedse",
"updatedAt": "2021-06-02T20:59:14.191Z",
"createdAt": "2021-06-02T20:59:14.191Z"
},
{
"id": "session-authentication",
"title": "Session Based Authentication",
"description": "Understand what is session based authentication and how it is implemented",
"isNew": false,
"type": "visual",
"authorUsername": "kamranahmedse",
"updatedAt": "2021-05-26T20:59:14.191Z",
"createdAt": "2021-05-26T20:59:14.191Z"
},
{
"id": "basic-authentication",
"title": "Basic Authentication",
"description": "Understand what is basic authentication and how it is implemented",
"isNew": false,
"type": "visual",
"authorUsername": "kamranahmedse",
"updatedAt": "2021-05-19T20:59:14.191Z",
"createdAt": "2021-05-19T20:59:14.191Z"
},
{
"id": "character-encodings",
"title": "Character Encodings",
"description": "Covers the basics of character encodings and explains ASCII vs Unicode",
"isNew": false,
"type": "visual",
"authorUsername": "kamranahmedse",
"updatedAt": "2021-05-14T20:59:14.191Z",
"createdAt": "2021-05-14T20:59:14.191Z"
},
{
"id": "unfamiliar-codebase",
"title": "Unfamiliar Codebase",
"description": "Tips on getting familiar with an unfamiliar codebase",
"isNew": false,
"type": "visual",
"authorUsername": "kamranahmedse",
"updatedAt": "2021-05-04T20:59:14.191Z",
"createdAt": "2021-05-04T20:59:14.191Z"
},
{
"id": "why-build-it-and-they-will-come-wont-work-anymore",
"title": "Build it and they will come?",
"description": "Why “build it and they will come” alone wont work anymore",
"isNew": false,
"type": "textual",
"authorUsername": "spekulatius",
"updatedAt": "2021-05-04T12:59:14.191Z",
"createdAt": "2021-05-04T12:59:14.191Z"
},
{
"id": "dhcp-in-one-picture",
"title": "DHCP in One Picture",
"description": "Here is what happens when a new device joins the network.",
"isNew": false,
"type": "visual",
"authorUsername": "kamranahmedse",
"updatedAt": "2021-04-28T15:48:21.191Z",
"createdAt": "2021-04-28T15:48:21.191Z"
},
{
"id": "ssl-tls-https-ssh",
"title": "SSL vs TLS vs SSH",
"description": "Quick tidbit on the differences between SSL, TLS, HTTPS and SSH",
"isNew": false,
"type": "visual",
"authorUsername": "kamranahmedse",
"updatedAt": "2021-04-22T15:48:21.191Z",
"createdAt": "2021-04-22T15:48:21.191Z"
},
{
"id": "asymptotic-notation",
"title": "Asymptotic Notation",
"description": "Learn the basics of measuring the time and space complexity of algorithms",
"isNew": false,
"type": "visual",
"authorUsername": "kamranahmedse",
"updatedAt": "2021-04-03T15:48:21.191Z",
"createdAt": "2021-04-03T15:48:21.191Z"
},
{
"id": "big-o-notation",
"title": "Big-O Notation",
"description": "Easy to understand explanation of Big-O notation without any fancy terms",
"isNew": false,
"type": "visual",
"authorUsername": "kamranahmedse",
"updatedAt": "2021-03-15T15:48:21.191Z",
"createdAt": "2021-03-15T15:48:21.191Z"
},
{
"id": "random-numbers",
"title": "Random Numbers: Are they?",
"description": "Learn how they are generated and why they may not be truly random.",
"isNew": false,
"type": "visual",
"authorUsername": "kamranahmedse",
"updatedAt": "2021-03-14T15:48:21.191Z",
"createdAt": "2021-03-14T15:48:21.191Z"
},
{
"id": "scaling-databases",
"title": "Scaling Databases",
"description": "Learn the ups and downs of different database scaling strategies",
"isNew": false,
"type": "visual",
"authorUsername": "kamranahmedse",
"updatedAt": "2021-02-18T15:48:21.191Z",
"createdAt": "2021-02-18T15:48:21.191Z"
},
{
"id": "what-is-internet",
"title": "How does the internet work?",
"description": "Learn the basics of internet and everything involved with this short video series",
"isNew": false,
"type": "textual",
"authorUsername": "kamranahmedse",
"updatedAt": "2021-02-29T15:48:21.191Z",
"createdAt": "2021-02-29T15:48:21.191Z"
},
{
"id": "torrent-client",
"title": "Building a BitTorrent Client",
"description": "Learn everything you need to know about BitTorrent by writing a client in Go",
"isNew": false,
"type": "textual",
"authorUsername": "jesse",
"updatedAt": "2021-01-17T15:48:21.191Z",
"createdAt": "2021-01-17T15:48:21.191Z",
"canonical": "https://blog.jse.li/posts/torrent/"
},
{
"id": "levels-of-seniority",
"title": "Levels of Seniority",
"description": "How to Step Up as a Junior, Mid Level or a Senior Developer?",
"isNew": false,
"type": "textual",
"authorUsername": "kamranahmedse",
"updatedAt": "2020-12-03T12:13:00.860Z",
"createdAt": "2020-12-03T12:13:00.860Z"
},
{
"id": "design-patterns-for-humans",
"title": "Design Patterns for Humans",
"description": "A language agnostic, ultra-simplified explanation to design patterns",
"isNew": false,
"type": "textual",
"authorUsername": "kamranahmedse",
"updatedAt": "2019-10-09T12:00:00.860Z",
"createdAt": "2019-01-23T17:00:00.860Z"
},
{
"id": "journey-to-http2",
"title": "Journey to HTTP/2",
"description": "The evolution of HTTP. How it all started and where we stand today",
"isNew": false,
"type": "textual",
"authorUsername": "kamranahmedse",
"createdAt": "2018-12-04T12:00:00.860Z",
"updatedAt": "2018-12-04T12:00:00.860Z",
"isDraft": true
},
{
"id": "dns-in-one-picture",
"title": "DNS in One Picture",
"description": "Quick illustrative guide on how a website is found on the internet.",
"isNew": false,
"type": "visual",
"authorUsername": "kamranahmedse",
"updatedAt": "2018-12-04T12:00:00.860Z",
"createdAt": "2018-12-04T17:00:00.860Z"
},
{
"id": "http-caching",
"title": "HTTP Caching",
"description": "Everything you need to know about web caching",
"isNew": false,
"type": "textual",
"authorUsername": "kamranahmedse",
"createdAt": "2018-11-29T17:00:00.860Z",
"updatedAt": "2018-11-29T17:00:00.860Z"
},
{
"id": "history-of-javascript",
"title": "Brief History of JavaScript",
"description": "How JavaScript was introduced and evolved over the years",
"isNew": false,
"type": "textual",
"authorUsername": "kamranahmedse",
"createdAt": "2017-10-28T17:00:00.860Z",
"updatedAt": "2017-10-28T17:00:00.860Z"
},
{
"id": "proxy-servers",
"title": "Proxy Servers",
"description": "How do proxy servers work and what are forward and reverse proxies?",
"isNew": false,
"type": "textual",
"authorUsername": "ebrahimbharmal007",
"createdAt": "2017-10-24T17:00:00.860Z",
"updatedAt": "2017-10-24T17:00:00.860Z"
}
]

View File

@@ -1,4 +0,0 @@
Asymptotic notation is the standard way of measuring the time and space that an algorithm will consume as the input grows. In one of my last guides, I covered "Big-O notation" and a lot of you asked for a similar one for Asymptotic notation. You can find the [previous guide here](/guides/big-o-notation).
[![](/guides/asymptotic-notation.png)](/guides/asymptotic-notation.png)

View File

@@ -1,2 +0,0 @@
[![](/guides/avoid-render-blocking-javascript-with-async-defer.png)](/guides/avoid-render-blocking-javascript-with-async-defer.png)

View File

@@ -1,2 +0,0 @@
[![](/guides/basic-authentication.png)](/guides/basic-authentication.png)

View File

@@ -1,83 +0,0 @@
Our last video series was about data structures. We looked at the most common data structures, their use cases, pros and cons, and the different operations you could perform on each data structure.
Today, we are kicking off a similar series for Authentication strategies where we will discuss everything you need to know about authentication and authentication strategies.
In this guide today will be talking about what authentication is, and we will cover some terminology that will help us later in the series. You can watch the video below or continue reading this guide.
<iframe src="https://www.youtube.com/embed/Mcyt9SrZT6g" title="Basics of Authentication" />
## What is Authentication?
Authentication is the process of verifying someone's identity. A real-world example of that would be when you board a plane, the airline worker checks your passport to verify your identity, so the airport worker authenticates you.
If we talk about computers, when you log in to any website, you usually authenticate yourself by entering your username and password, which is then checked by the website to ensure that you are who you claim to be. There are two things you should keep in mind:
- Authentication is not only for the persons
- And username and password are not the only way to authenticate.
Some other examples are:
- When you open a website in the browser. If the website uses HTTP, TLS is used to authenticate the server and avoid the fake loading of websites.
- There might be server-to-server communication on the website. The server may need to authenticate the incoming request to avoid malicious usage.
## How does Authentication Work?
On a high level, we have the following factors used for authentication.
- **Username and Password**
- **Security Codes, Pin Codes, or Security Questions** — An example would be the pin code you enter at an ATM to withdraw cash.
- **Hard Tokens and Soft Tokens** — Hard tokens are the special hardware devices that you attach to your device to authenticate yourself. Soft tokens, unlike hard tokens, don't have any authentication-specific device; we must verify the possession of a device that was used to set up the identity. For example, you may receive an OTP to log in to your account on a website.
- **Biometric Authentication** — In biometric authentication, we authenticate using biometrics such as iris, facial, or voice recognition.
We can categorize the factors above into three different types.
- Username / Password and Security codes rely on the person's knowledge: we can group them under the **Knowledge Factor**.
- In hard and soft tokens, we authenticate by checking the possession of hardware, so this would be a **Possession Factor**.
- And in biometrics, we test the person's inherent qualities, i.e., iris, face, or voice, so this would be a **Qualities** factor.
This brings us to our next topic: Multi-factor Authentication and Two-Factor Authentication.
## Multifactor Authentication
Multifactor authentication is the type of authentication in which we rely on more than one factor to authenticate a user.
For example, if we pick up username/password from the **knowledge factor**. And we pick soft tokens from the **possession factor**, and we say that for a user to authenticate, they must enter their credentials and an OTP, which will be sent to their mobile phone, so this would be an example of multifactor authentication.
In multifactor authentication, since we rely on more than one factor, this way of authentication is much more secure than single-factor authentication.
One important thing to note here is that the factors you pick for authentication, they must differ. So, for example, if we pick up a username/password and security question or security codes, it is still not true multifactor authentication because we still rely on the knowledge factor. The factors have to be different from each other.
### Two-Factor Authentication
Two-factor authentication is similar to multifactor authentication. The only difference is that there are precisely two factors in 2FA. In MFA, we can have 2, 3, 4, or any authentication factors; 2FA has exactly two factors. We can say that 2FA is always MFA, because there are more than one factors. MFA is not always 2FA because there may be more than two factors involved.
Next we have the difference between authentication and authorization. This comes up a lot in the interviews, and beginners often confuse them.
### What is Authentication
Authentication is the process of verifying the identity. For example, when you enter your credentials at a login screen, the application here identifies you through your credentials. So this is what the authentication is, the process of verifying the identity.
In case of an authentication failure, for example, if you enter an invalid username and password, the HTTP response code is "Unauthorized" 401.
### What is Authorization
Authorization is the process of checking permission. Once the user has logged in, i.e., the user has been authenticated, the process of reviewing the permission to see if the user can perform the relevant operation or not is called authorization.
And in case of authorization failure, i.e., if the user tries to perform an operation they are not allowed to perform, the HTTP response code is forbidden 403.
## Authentication Strategies
Given below is the list of common authentication strategies:
- Basics of Authentication
- Session Based Authentication
- Token-Based Authentication
- JWT Authentication
- OAuth - Open Authorization
- Single Sign On (SSO)
In this series of illustrated videos and textual guides, we will be going through each of the strategies discussing what they are, how they are implemented, the pros and cons and so on.
So stay tuned, and I will see you in the next one.

View File

@@ -1,4 +0,0 @@
Big-O notation is the mathematical notation that helps analyse the algorithms to get an idea about how they might perform as the input grows. The image below explains Big-O in a simple way without using any fancy terminology.
[![](/guides/big-o-notation.png)](/guides/big-o-notation.png)

View File

@@ -1,2 +0,0 @@
[![](/guides/character-encodings.png)](/guides/character-encodings.png)

View File

@@ -1,4 +0,0 @@
The image below details the differences between the continuous integration and continuous delivery. Also, here is the [accompanying video on implementing that with GitHub actions](https://www.youtube.com/watch?v=nyKZTKQS_EQ).
[![](/guides/ci-cd.png)](/guides/ci-cd.png)

View File

@@ -1,2 +0,0 @@
[![](/guides/dhcp.png)](/guides/dhcp.png)

View File

@@ -1,5 +0,0 @@
DNS or Domain Name System is one of the fundamental blocks of the internet. As a developer, you should have at-least the basic understanding of how it works. This article is a brief introduction to what is DNS and how it works.
DNS at its simplest is like a phonebook on your mobile phone. Whenever you have to call one of your contacts, you can either dial their number from your memory or use their name which will then be used by your mobile phone to search their number in your phone book to call them. Every time you make a new friend, or your existing friend gets a mobile phone, you have to memorize their phone number or save it in your phonebook to be able to call them later on. DNS or Domain Name System, in a similar fashion, is a mechanism that allows you to browse websites on the internet. Just like your mobile phone does not know how to call without knowing the phone number, your browser does not know how to open a website just by the domain name; it needs to know the IP Address for the website to open. You can either type the IP Address to open, or provide the domain name and press enter which will then be used by your browser to find the IP address by going through several hoops. The picture below is the illustration of how your browser finds a website on the internet.
[![](https://i.imgur.com/z9rwm5A.png)](https://i.imgur.com/z9rwm5A.png)

View File

@@ -1,41 +0,0 @@
Around 10 years ago, Jeff Atwood (the founder of stackoverflow) made a case that JavaScript is going to be the future and he coined the “Atwood Law” which states that *Any application that can be written in JavaScript will eventually be written in JavaScript*. Fast-forward to today, 10 years later, if you look at it it rings truer than ever. JavaScript is continuing to gain more and more adoption.
### JavaScript is announced
JavaScript was initially created by [Brendan Eich](https://twitter.com/BrendanEich) of NetScape and was first announced in a press release by Netscape in 1995. It has a bizarre history of naming; initially it was named `Mocha` by the creator, which was later renamed to `LiveScript`. In 1996, about a year later after the release, NetScape decided to rename it to be `JavaScript` with hopes of capitalizing on the Java community (although JavaScript did not have any relationship with Java) and released Netscape 2.0 with the official support of JavaScript.
### ES1, ES2 and ES3
In 1996, Netscape decided to submit it to [ECMA International](https://en.wikipedia.org/wiki/Ecma_International) with the hopes of getting it standardized. First edition of the standard specification was released in 1997 and the language was standardized. After the initial release, `ECMAScript` was continued to be worked upon and in no-time two more versions were released ECMAScript 2 in 1998 and ECMAScript 3 in 1999.
### Decade of Silence and ES4
After the release of ES3 in 1999, there was a complete silence for a decade and no changes were made to the official standard. There was some work on the fourth edition in the initial days; some of the features that were being discussed included classes, modules, static typings, destructuring etc. It was being targeted to be released by 2008 but was abandoned due to political differences concerning language complexity. However, the vendors kept introducing the extensions to the language and the developers were left scratching their heads — adding polyfills to battle compatibility issues between different browsers.
### From silence to ES5
Google, Microsoft, Yahoo and other disputers of ES4 came together and decided to work on a less ambitious update to ES3 tentatively named ES3.1. But the teams were still fighting about what to include from ES4 and what not. Finally, in 2009 ES5 was released mainly focusing on fixing the compatibility and security issues etc. But there wasnt much of a splash in the water — it took ages for the vendors to incorporate the standards and many developers were still using ES3 without being aware of the “modern” standards.
### Release of ES6 — ECMAScript 2015
After a few years of the release of ES5, things started to change, TC39 (the committee under ECMA international responsible for ECMAScript standardization) kept working on the next version of ECMAScript (ES6) which was originally named ES Harmony, before being eventually released with the name ES2015. ES2015 adds significant features and syntactic sugar to allow writing complex applications. Some of the features that ES6 has to offer, include Classes, Modules, Arrows, Enhanced object literals, Template strings, Destructuring, Default param values + rest + spread, Let and Const, Iterators + for..of, Generators, Maps + Sets, Proxies, Symbols, Promises, math + number + string + array + object APIs [etc](http://es6-features.org/#Constants)
Browser support for ES6 is still scarce but everything that ES6 has to offer is still available to developers by transpiling the ES6 code to ES5. With the release of 6th version of ECMAScript, TC39 decided to move to yearly model of releasing updates to ECMAScript so to make sure that the new features are added as soon as they are approved and we dont have to wait for the full specification to be drafted and approved — thus 6th version of ECMAScript was renamed as ECMAScript 2015 or ES2015 before the release in June 2015. And the next versions of ECMAScript were decided to published in June of every year.
### Release of ES7 — ECMAScript 2016
In June 2016, seventh version of ECMAScript was released. As ECMAScript has been moved to an yearly release model, ECMAScript 2016 (ES2016) comparatively did not have much to offer. ES2016 includes just two new features
* Exponentiation operator `**`
* `Array.prototype.includes`
### Release of ES8 — ECMAScript 2017
The eighth version of ECMAScript was released in June 2017. The key highlight of ES8 was the addition of async functions. Here is the list of new features in ES8
* `Object.values()` and `Object.entries()`
* String padding i.e. `String.prototype.padEnd()` and `String.prototype.padStart()`
* `Object.getOwnPropertyDescriptors`
* Trailing commas in function parameter lists and calls
* Async functions
### What is ESNext then?
ESNext is a dynamic name that refers to whatever the current version of ECMAScript is at the given time. For example, at the time of this writing `ES2017` or `ES8` is `ESNext`.
### What does the future hold?
Since the release of ES6, [TC39](https://github.com/tc39) has quite streamlined their process. TC39 operates through a Github organization now and there are [several proposals](https://github.com/tc39/proposals) for new features or syntax to be added to the next versions of ECMAScript. Any one can go ahead and [submit a proposal](https://github.com/tc39/proposals) thus resulting in increasing the participation from the community. Every proposal goes through [four stages of maturity](https://tc39.github.io/process-document/) before it makes it into the specification.
And that about wraps it up. Feel free to leave your feedback in the comments section below. Also here are the links to original language specifications [ES6](https://www.ecma-international.org/ecma-262/6.0/), [ES7](https://www.ecma-international.org/ecma-262/7.0/) and [ES8](https://www.ecma-international.org/ecma-262/8.0/).

View File

@@ -1,2 +0,0 @@
[![](/guides/jwt-authentication.png)](/guides/jwt-authentication.png)

View File

@@ -1,2 +0,0 @@
[![](/guides/oauth.png)](/guides/oauth.png)

View File

@@ -1,5 +0,0 @@
One of my favorite pastimes is going through the history of my favorite projects to learn how they grew over time or how certain features were implemented.
The image below describes how I do that in WebStorm.
[![](/guides/project-history.png)](/guides/project-history.png)

View File

@@ -1,47 +0,0 @@
The Internet has connected people across the world using social media and audio/video calling features along with providing an overabundance of knowledge and tools. All this comes with an inherent danger of security and privacy breaches. In this guide, we will talk about **proxies** that play a vital role in mitigating these risks. We will cover the following topics in this guide:
- [Proxy Server](#proxy-server)
- [Forward Proxy Server](#forward-proxy-server)
- [Reverse Proxy Server](#reverse-proxy-server)
- [Summary](#summary)
## Proxy Server
***Every web request which is sent from the client to a web server goes through some type of proxy server.*** A proxy server acts as a gateway between client *(you)* and the internet and separates end-users from the websites you browse. It replaces the source IP address of the web request with the proxy server's IP address and then forwards it to the web server. The web server is unaware of the client, it only sees the proxy server.
![Proxy Server Description](/guides/proxy/proxy-example.png)
> NOTE: This is not an accurate description but rather just an illustration.
Proxy servers serve as a single point of control making it easier to enforce security policies. It also provides caching mechanism which stores the requested web pages on the proxy server to improve performance. If the requested web-page is available in cache memory then instead of forwarding the request to the web-server it will send the cached webpage back to the client. This **saves big companies thousands of dollars** by reducing the load on their servers as their website is visited by millions of users every day.
## Forward Proxy Server
A forward proxy is generally implemented on the client side and **sits in front of multiple clients** or client sources. Forward proxy servers are mainly used by companies to **manage the internet usage** of their employees and **restrict content**. It is also used as a **firewall** to secure the company's network by blocking any request which would pose threat to the company's network. Proxy servers are also used to **bypass geo-restriction** and browse content that might be blocked in the user's country. It enables users to **browse anonymously**, as the proxy server masks their details from the website's servers.
![Forward Proxy Description](/guides/proxy/forward-proxy.png)
> NOTE: This is not an accurate description but rather just an illustration
## Reverse Proxy Server
Reverse proxy servers are implemented on the **server side** instead of the client side. It **sits in front of multiple webservers** and manages incoming requests by forwarding them to the web servers. It provides anonymity for the **back-end web servers and not the client**. Reverse proxy servers are generally used to perform tasks such as **authentication, content caching, and encryption/decryption** on behalf of the web server. These tasks would **hog CPU cycles** on the web server and degrade the performance of the website by introducing a high amount of delay in loading the webpage. Reverse proxies are also used as **load balancers** to distribute the incoming traffic efficiently among the web servers but it is **not optimized** for this task. In essence, a reverse proxy server is a gateway to a web-server or group of web-servers.
![Reverse Proxy Description](/guides/proxy/reverse-proxy.png)
> NOTE: This is not an accurate description but rather just an illustration. Red lines represent the server's response and black lines represent the initial request from client(s).
## Summary
A proxy server acts as a gateway between client *(you)* and the internet and separates end-users from the websites you browse. ***The position of the proxy server on the network determines whether it is a forward or a reverse proxy server***. A Forward proxy is implemented on the client side and **sits in front of multiple clients** or client sources and forwards requests to the web server. Reverse proxy servers are implemented on the **server side** it **sits in front of multiple webservers** and manage the incoming requests by forwarding them to the web servers.
If all this was too much to take in, I have a simple analogy for you.
At a restaurant, the waiter/waitress takes your order and gives it to the kitchen head chef. The head chef then calls out the order and assigns tasks to everyone in the kitchen.
In this analogy:
* You are the client
* Your order is the web request
* Waiter/Waitress is your forward proxy server
* Kitchen head chef is the reverse proxy server
* Other chefs working in the kitchen are the web servers
With that said our guide comes to an end. Thank you for reading and feel free to submit any updates to the guide using the links below.

View File

@@ -1,4 +0,0 @@
Random numbers are everywhere from computer games to lottery systems, graphics software, statistical sampling, computer simulation and cryptography. Graphic below is a quick explanation to how the random numbers are generated and why they may not be truly random.
[![](/guides/random-numbers.png)](/guides/random-numbers.png)

View File

@@ -1,4 +0,0 @@
The chart below aims to give you a really basic understanding of how the capability of a DBMS is increased to handle a growing amount of load.
[![](/guides/scaling-databases.svg)](/guides/scaling-databases.svg)

View File

@@ -1,2 +0,0 @@
[![](/guides/session-authentication.png)](/guides/session-authentication.png)

View File

@@ -1,199 +0,0 @@
HTTP is the internet protocol that standardizes how clients and servers interact with each other. When you open a website, among other things, HTTP is the protocol that helps load the website in the browser.
## HTTP is Stateless
HTTP is a stateless protocol which means that each request made from the client to the server is treated as a standalone request; neither the client nor the server keeps track of the subsequent requests. Sessions allow you to change that; with sessions, the server has a way to associate some information with the client so that when the same client requests the server, it can retrieve that information.
In this guide, we will learn what is Session-Based Authentication and how to implement it in Node.js. We also have a separate [visual guide on Session-Based Authentication](/guides/session-authentication) as well that explains the topic visually.
## What is Session-Based Authentication?
Session-based authentication is a stateful authentication technique where we use sessions to keep track of the authenticated user. Here is how Session Based Authentication works:
* User submits the login request for authentication.
* Server validates the credentials. If the credentials are valid, the server initiates a session and stores some information about the client. This information can be stored in memory, file system, or database. The server also generates a unique identifier that it can later use to retrieve this session information from the storage. Server sends this unique session identifier to the client.
* Client saves the session id in a cookie and this cookie is sent to the server in each request made after the authentication.
* Server, upon receiving a request, checks if the session id is present in the request and uses this session id to get information about the client.
And that is how session-based authentication works.
## Session-Based Authentication in Node.js
Now that we know what session-based authentication is, let's see how we can implement session-based authentication in Node.js.
Please note that, for the sake of simplicity, I have intentionally kept the project strictly relevant to the Session Based Authentication and have left out a lot of details that a production-ready application may require. Also, if you don't want to follow along, project [codebase can be found on GitHub](https://github.com/kamranahmedse/node-session-auth-example).
First things first, create an empty directory that will be holding our application.
```shell
mkdir session-auth-example
```
Now run the following command to setup a sample `package.json` file:
```shell
npm init -y
```
Next, we need to install the dependencies:
```shell
npm install express express-session
```
`Express` is the application framework, and `express-session` is the package that helps work with sessions easily.
### Setting up the server
Now create an `index.js` file at the root of the project with the following content:
```javascript
const express = require('express');
const sessions = require('express-session');
const app = express();
app.use(sessions({
secret: "some secret",
cookie: {
maxAge: 1000 * 60 * 60 * 24 // 24 hours
},
resave: true,
saveUninitialized: false,
}));
app.use(express.json());
app.use(express.urlencoded({extended: true}));
// @todo register routes
app.listen(3000, () => {
console.log(`Server Running at port 3000`);
});
```
The important piece to note here is the `express-session` middleware registration which automatically handles the session initialization, cooking parsing and session data retrieval, and so on. In our example here, we are passing the following configuration options:
* `secret`: This is used to sign the session ID cookie. Using a secret that cannot be guessed will reduce the ability to hijack a session.
* `cookie`: Object containing the configuration for session id cookie.
* `resave`: Forces the session to be saved back to the session store, even if the session data was never modified during the request.
* `saveUninitialized`: Forces an "uninitialized" session to be saved to the store, i.e., saves a session to the store even if the session was not initiated.
Another important option is `store` which we can configure to change how/where the session data is stored on the server. By default, this data is stored in the memory, i.e., `MemoryStore`.
Look at the [express-session documentation](https://github.com/expressjs/session) to learn more about the available options.
### Creating Handlers
Create a directory called the `handlers` at the project's root. This is the directory where we will be placing all the route-handling functions.
Now let's create the homepage route, which will show the welcome message and a link to log out for the logged-in users and redirect to the login screen for the logged-out users. Create a file at `handlers/home.js` with the following content.
```javascript
module.exports = function HomeHandler(req, res) {
if (!req.session.userid) {
return res.redirect('/login');
}
res.setHeader('Content-Type', 'text/HTML')
res.write(`
<h1>Welcome back ${req.session.userid}</h1>
<a href="/logout">Logout</a>
`);
res.end()
}
```
At the top of this function, you will notice the check `req.session.userid`. `req.session` is automatically populated using the session cookie by the `express-session` middleware that we registered earlier. `req.session.userid` is one of the data fields that we will set to store the `userid` of the logged in user.
Next, we need to register this handler with a route. Open the `index.js` file at the root of the project and register the following route:
```javascript
const HomeHandler = require('./handlers/home.js');
app.get('/', HomeHandler);
```
Next, we have the login page, redirecting the user to the home screen if the user is logged in or showing the login form. Create a file at `handlers/login.js` with the following content:
```javascript
module.exports = function LoginHandler(req, res) {
if (req.session.userid) {
return res.redirect('/');
}
res.setHeader('Content-Type', 'text/HTML')
res.write(`
<h1>Login</h1>
<form method="post" action="/process-login">
<input type="text" name="username" placeholder="Username" /> <br>
<input type="password" name="password" placeholder="Password" /> <br>
<button type="submit">Login</button>
</form>
`);
res.end();
}
```
Again, at the top of the function, we are simply checking if we have `userid` in the session (which means the user is logged in). If the user is logged in, we redirect them to the homepage; if not, we show the login screen. In the login form, we have the method of `post`, and we submit the form to `/process-login`. Please note that, for the sake of simplicity, we have a simple HTML string returned in the response, but in a real-world application, you will probably have a separate view file.
Let's first register this page and then implement `/process-login` endpoint. Open the `index.js` file from the root of the project and register the following route:
```javascript
const LoginHandler = require('./handlers/login.js');
app.get('/login', LoginHandler);
```
Next, we have to implement the functionality to process the login form submissions. Create a file at `handlers/process-login.js` with the following content:
```javascript
module.exports = function processLogin(req, res) {
if (req.body.username !== 'admin' || req.body.password !== 'admin') {
return res.send('Invalid username or password);
}
req.session.userid = req.body.username;
res.redirect('/');
}
```
As you can see, we are simply checking that the username and password should both be `admin` and `admin` for a user to authenticate successfully. Upon finding valid credentials, we set the `userid` in the session by updating `req.session.userid`. Similarly, you can set any data in the session. For example, if we wanted to store the user role, we would do the following:
```javascript
req.session.role = 'admin'
```
And later access this value out of the session anywhere in the subsequent requests.
Register this route in the `index.js` file at the root of the project:
```javascript
const ProcessLoginHandler = require('./handlers/process-login.js');
app.post('/process-login', ProcessLoginHandler);
```
Finally, we have the logout functionality. Create a file at `handlers/logout.js` with the following content:
```javascript
module.exports = function Logout(req, res) {
req.session.destroy();
res.redirect('/');
}
```
We reset the session by calling `req.session.destroy()` and then redirecting the user to the homepage. Register the logout handler in the `index.js` file using the following:
```javascript
const LogoutHandler = require('./handlers/logout.js');
app.get('/logout', LogoutHandler);
```
## Running the Application
Open the `package.json` file and register the `start` script as follows:
```javascript
"scripts": {
"start": "node index.js"
},
```
Now you can start the application by running the following command:
```shell
npm run start
```
Now, if you open up your browser and visit the project at `http://localhost:3000` you will be able to see the Session-Based Authentication in action.

Some files were not shown because too many files have changed in this diff Show More