├── .DS_Store
├── LICENSE
├── README.md
├── assets
└── ChinguLogo.svg
├── codesnippets
├── formatRawDate.js
├── objectToFile.js
├── reduceObject.js
└── validateDirPath.js
└── docs
├── CODE_OF_CONDUCT.md
├── COLLABORATOR_GUIDE.md
├── CONTRIBUTING.md
└── Git - Team Workflow.png
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chingu-voyages/ChinguResourceList/7901fdf885e883213b08fd843f45ecfd020b7f81/.DS_Store
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Creative Commons Legal Code
2 |
3 | CC0 1.0 Universal
4 |
5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
12 | HEREUNDER.
13 |
14 | Statement of Purpose
15 |
16 | The laws of most jurisdictions throughout the world automatically confer
17 | exclusive Copyright and Related Rights (defined below) upon the creator
18 | and subsequent owner(s) (each and all, an "owner") of an original work of
19 | authorship and/or a database (each, a "Work").
20 |
21 | Certain owners wish to permanently relinquish those rights to a Work for
22 | the purpose of contributing to a commons of creative, cultural and
23 | scientific works ("Commons") that the public can reliably and without fear
24 | of later claims of infringement build upon, modify, incorporate in other
25 | works, reuse and redistribute as freely as possible in any form whatsoever
26 | and for any purposes, including without limitation commercial purposes.
27 | These owners may contribute to the Commons to promote the ideal of a free
28 | culture and the further production of creative, cultural and scientific
29 | works, or to gain reputation or greater distribution for their Work in
30 | part through the use and efforts of others.
31 |
32 | For these and/or other purposes and motivations, and without any
33 | expectation of additional consideration or compensation, the person
34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she
35 | is an owner of Copyright and Related Rights in the Work, voluntarily
36 | elects to apply CC0 to the Work and publicly distribute the Work under its
37 | terms, with knowledge of his or her Copyright and Related Rights in the
38 | Work and the meaning and intended legal effect of CC0 on those rights.
39 |
40 | 1. Copyright and Related Rights. A Work made available under CC0 may be
41 | protected by copyright and related or neighboring rights ("Copyright and
42 | Related Rights"). Copyright and Related Rights include, but are not
43 | limited to, the following:
44 |
45 | i. the right to reproduce, adapt, distribute, perform, display,
46 | communicate, and translate a Work;
47 | ii. moral rights retained by the original author(s) and/or performer(s);
48 | iii. publicity and privacy rights pertaining to a person's image or
49 | likeness depicted in a Work;
50 | iv. rights protecting against unfair competition in regards to a Work,
51 | subject to the limitations in paragraph 4(a), below;
52 | v. rights protecting the extraction, dissemination, use and reuse of data
53 | in a Work;
54 | vi. database rights (such as those arising under Directive 96/9/EC of the
55 | European Parliament and of the Council of 11 March 1996 on the legal
56 | protection of databases, and under any national implementation
57 | thereof, including any amended or successor version of such
58 | directive); and
59 | vii. other similar, equivalent or corresponding rights throughout the
60 | world based on applicable law or treaty, and any national
61 | implementations thereof.
62 |
63 | 2. Waiver. To the greatest extent permitted by, but not in contravention
64 | of, applicable law, Affirmer hereby overtly, fully, permanently,
65 | irrevocably and unconditionally waives, abandons, and surrenders all of
66 | Affirmer's Copyright and Related Rights and associated claims and causes
67 | of action, whether now known or unknown (including existing as well as
68 | future claims and causes of action), in the Work (i) in all territories
69 | worldwide, (ii) for the maximum duration provided by applicable law or
70 | treaty (including future time extensions), (iii) in any current or future
71 | medium and for any number of copies, and (iv) for any purpose whatsoever,
72 | including without limitation commercial, advertising or promotional
73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
74 | member of the public at large and to the detriment of Affirmer's heirs and
75 | successors, fully intending that such Waiver shall not be subject to
76 | revocation, rescission, cancellation, termination, or any other legal or
77 | equitable action to disrupt the quiet enjoyment of the Work by the public
78 | as contemplated by Affirmer's express Statement of Purpose.
79 |
80 | 3. Public License Fallback. Should any part of the Waiver for any reason
81 | be judged legally invalid or ineffective under applicable law, then the
82 | Waiver shall be preserved to the maximum extent permitted taking into
83 | account Affirmer's express Statement of Purpose. In addition, to the
84 | extent the Waiver is so judged Affirmer hereby grants to each affected
85 | person a royalty-free, non transferable, non sublicensable, non exclusive,
86 | irrevocable and unconditional license to exercise Affirmer's Copyright and
87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the
88 | maximum duration provided by applicable law or treaty (including future
89 | time extensions), (iii) in any current or future medium and for any number
90 | of copies, and (iv) for any purpose whatsoever, including without
91 | limitation commercial, advertising or promotional purposes (the
92 | "License"). The License shall be deemed effective as of the date CC0 was
93 | applied by Affirmer to the Work. Should any part of the License for any
94 | reason be judged legally invalid or ineffective under applicable law, such
95 | partial invalidity or ineffectiveness shall not invalidate the remainder
96 | of the License, and in such case Affirmer hereby affirms that he or she
97 | will not (i) exercise any of his or her remaining Copyright and Related
98 | Rights in the Work or (ii) assert any associated claims and causes of
99 | action with respect to the Work, in either case contrary to Affirmer's
100 | express Statement of Purpose.
101 |
102 | 4. Limitations and Disclaimers.
103 |
104 | a. No trademark or patent rights held by Affirmer are waived, abandoned,
105 | surrendered, licensed or otherwise affected by this document.
106 | b. Affirmer offers the Work as-is and makes no representations or
107 | warranties of any kind concerning the Work, express, implied,
108 | statutory or otherwise, including without limitation warranties of
109 | title, merchantability, fitness for a particular purpose, non
110 | infringement, or the absence of latent or other defects, accuracy, or
111 | the present or absence of errors, whether or not discoverable, all to
112 | the greatest extent permissible under applicable law.
113 | c. Affirmer disclaims responsibility for clearing rights of other persons
114 | that may apply to the Work or any use thereof, including without
115 | limitation any person's Copyright and Related Rights in the Work.
116 | Further, Affirmer disclaims responsibility for obtaining any necessary
117 | consents, permissions or other rights required for any use of the
118 | Work.
119 | d. Affirmer understands and acknowledges that Creative Commons is not a
120 | party to this document and has no duty or obligation with respect to
121 | this CC0 or use of the Work.
122 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | #
 Chingu Resource List
2 |
3 | :notebook: A crowd-sourced list of resources for Developers & Teams :notebook:
4 |
5 | [](./CONTRIBUTING.md)
6 |
7 |
8 |
9 | ## Contents
10 |
11 | - [APIs](#apis)
12 | - [Backend](#backend)
13 | - [Books](#books)
14 | - [Communication & Collaboration Tools](#communication-and-collaboration-tools)
15 | - [Design](#design)
16 | - [Frontend](#frontend)
17 | - [Git](#git)
18 | - [Languages](#languages)
19 | - [Packages & Libraries](#packages-and-libraries)
20 | - [Tools](#tools)
21 | - [Open Source Contribution](#open-source-contribution)
22 | - [Productivity Tools](#productivity-tools)
23 | - [Everything Else](#everything-else)
24 |
25 | ### How to Contribute
26 |
27 | Welcome to the crowd-sourced list of Developer resources sponsored by
28 | [Chingu](https://chingu.io). We welcome your contributions and comments.
29 |
30 | Sharing a resource is easy!
31 |
32 | 1. Fork this repo and clone onto your local machine
33 | 2. Create a feature branch following the conventions documented in [Contributing](https://github.com/chingu-voyages/ChinguResourceList/blob/development/docs/CONTRIBUTING.md).
34 | 3. Add your resource to the appropriate category & test it to make sure it
35 | is consistent with how other resources are formatted.
36 | 4. Create a Pull Request (PR)
37 |
38 | That's it! An admin with review and approve your PR. If there are any questions
39 | about your contribution we'll ask them or request changes through the PR
40 | process.
41 |
42 | ## APIs
43 |
44 | Whether it's for commercial apps or portfolio projects Developers depend on quality sources of data. Here are a few that have captured our attention!
45 |
46 | - [Data.gov](https://www.data.gov/)
47 | - [Kaggle](https://www.kaggle.com/datasets)
48 | - [Nasa](https://nasa.github.io/data-nasa-gov-frontpage/data_visualizations.html)
49 | - [UN Open Data Portal](https://undatacatalog.org/open-data-portals)
50 | - [Open Data Network](https://www.opendatanetwork.com/)
51 |
52 | ## Backend
53 |
54 | ### General
55 |
56 | - [Understanding the Backend Part 1](https://medium.com/chingu/understanding-the-back-end-part-i-d65aff455d3f): What is the Backend & what does it do?
57 | - [Understanding the Backend Part 2](https://medium.com/chingu/understanding-the-back-end-part-ii-ba520f79a0f5): What is the Backend & what does it do?
58 |
59 | ### Database Management Systems
60 |
61 | #### MongoDB
62 |
63 | - [MongoDB Basics](https://university.mongodb.com/courses/M001/about): Learn the fundamentals of MongoDB.
64 |
65 | #### PostgreSQL
66 |
67 | - [PostgreSQL Tutorial](https://www.postgresqltutorial.com/): Quick guide to learn PostgreSQL quickly.
68 |
69 |
70 | ### Security
71 |
72 | - [An Introduction to Environment Variables & How to Use Them](https://dev.to/chingu/an-introduction-to-environment-variables-and-how-to-use-them-1ck0): Decoupling configuration from the application
73 | - [Protect Application Assets: How to Secure Your Secrets](https://dev.to/chingu/protect-application-assets-how-to-secure-your-secrets-1in8): Here's a hint! Your browser isn't safe.
74 |
75 | ### GraphQL
76 |
77 | - [Why GraphQL?](https://tinyurl.com/yykbgku6): Advantages of GraphQL over REST
78 |
79 | ## Books
80 |
81 | - [Free Programming Books](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books.md): A large list of programming language books from the Ebook Foundation
82 |
83 | ## Communication and Collaboration Tools
84 |
85 | ## Design
86 |
87 | - [Adobe Color Wheel](https://color.adobe.com/create/color-wheel): One of the best color guides to choose for your next project
88 | - [Color Hunt](https://colorhunt.co/): Free and open source platform for color inspiration
89 | - [Lorem Picsum](https://picsum.photos/): This is the Lorem Ipsum of photos, easy to use photo placeholders
90 | - [App Icon Generator](https://appicon.co/): Easily generate icons for your next mobile application
91 | - [Contrast Checker](https://webaim.org/resources/contrastchecker/): Contrast & Color Accessibility Checker
92 |
93 | ### UI/UX
94 |
95 | - [UX or UI, where to focus?](https://tinyurl.com/yyn3ak2d): Understand the difference between UI & UX
96 | - [UI Goodies](http://www.uigoodies.com/): Variety of UI resources for designers
97 | - [Adobe XD](https://www.adobe.com/products/xd.html): Free program to create design prototypes
98 | - [Daily XD Creative Challenges](https://www.behance.net/challenge/xd): Learn Adobe XD with daily challenges and videos, scroll to the bottom to see previous challenges
99 | - [Let's XD](https://letsxd.com/): Learn Adobe XD at your own pace with videos and exercises
100 |
101 | ## Frontend
102 |
103 | ### CSS
104 |
105 | - [What I Learned About CSS](https://medium.com/chingu/what-i-learned-about-css-52b30cbb0625): One Chingu's insights on using CSS
106 | - [CSS Tricks](https://css-tricks.com/): Helpful articles, videos, and guides. Highly recommend the guides for flexbox and grid
107 | - [Flexbox Froggy](https://flexboxfroggy.com/): Learn flexbox as you place the frog on the lily pad in this in-browser game
108 | - [Flexbox Defense](http://www.flexboxdefense.com/): Another in-browser game to level up your flexbox skills
109 | - [Flexbox Zombies](https://geddski.teachable.com/p/flexbox-zombies): Master flexbox as you defeat zombies with this coding game
110 | - [CSS Diner](https://flukeout.github.io/): Learn more about the types of CSS selectors with this in-browser game
111 | - [Grid Garden](https://cssgridgarden.com/): Learn CSS Grid with an in-browser game
112 | - [CSS Reference](https://cssreference.io/): CSS Reference is a free visual guide to CSS
113 |
114 | ### HTML
115 |
116 | - [HTML Reference](https://htmlreference.io/): A free guide to all HTML elements and attributes
117 |
118 | ### General
119 |
120 | - [The A11Y Project](https://a11yproject.com/): A community-driven effort to make web accessibility easier.
121 | - [a11y Resources](https://a11yresources.webflow.io/): A growing list of accessibility tools and resources
122 | - [FlorinPop's YouTube Channel](https://www.youtube.com/channel/UCeU-1X402kT-JlLdAitxSMA): 200+ videos on HTML, CSS, JavaScript, Framworks, etc.
123 | - [Responsive Web Design Basics](https://web.dev/responsive-web-design-basics/): How to create sites which respond to the needs and capabilities of the device they are viewed on.
124 | - [Browser Support Tables](https://caniuse.com/): Provides up-to-date browser support tables for support of front-end web technologies on desktop and mobile web browsers
125 | - [Dev Docs](https://devdocs.io/): DevDocs combines multiple API documentations in a fast, organized, and searchable interface. Here's what you should know before you start
126 | - [Frontend Mentor](https://www.frontendmentor.io/): Improve your front-end coding skills by building real projects
127 | - [Catchafire](https://www.catchafire.org/): Volunteer your skills and make a difference virtually (variety of skills including web design and development)
128 |
129 | ### Frameworks
130 |
131 | #### React
132 |
133 | - [React Tutorial: An Overview and Walkthrough](https://www.taniarascia.com/getting-started-with-react/): Introduces the most important React concepts in a detailed, beginner-friendly way.
134 |
135 | - [Exploit React Error Boudaries to Improve UX](https://dev.to/chingu/exploit-react-error-boundaries-to-improve-ux-hdk): How to automate error detection & reporting
136 | - [Guidelines to improve your React folder structure](https://tinyurl.com/y6t7xa4g): How to structure a repo for React
137 |
138 | - [All React Hooks](https://www.youtube.com/playlist?list=PLC3y8-rFHvwisvxhZ135pogtX7_Oe3Q3A): For complete understanding of Hooks in React (Video)
139 |
140 | #### Angular
141 |
142 | - [Testing Angular](https://testing-angular.com/introduction/#introduction): A Guide to Robust Angular Applications
143 |
144 | - [Learn Angular](https://www.youtube.com/watch?v=2OHbjep_WjQ): Full Tutorial Course
145 |
146 | - [Angular 11 Project](https://www.youtube.com/watch?v=LiOzTQAz13Q): Learn how to create an Angular 11 project from scratch in this full course
147 |
148 | #### Vue
149 |
150 | - [Intro to Vue.js: Rendering, Directives, and Events](https://css-tricks.com/intro-to-vue-1-rendering-directives-events/)
151 |
152 | #### NextJs
153 | - [Getting Started with NextJS](https://nextjs.org/docs/getting-started): Documentation on getting started with NextJs
154 | - [Intro to NextJS Features](https://www.freecodecamp.org/news/nextjs-tutorial/): A breakdown of NextJs features by FreeCodeCamp
155 |
156 | ## Git
157 |
158 | - [GitExplorer](https://gitexplorer.com/): Find the right git commands you need without digging through the web
159 | - [How to Contribute on GitHub](https://www.dataschool.io/how-to-contribute-on-github/): A step-by-step guide to contributing on GitHub
160 | - [GitHub Readme Stats](https://github.com/anuraghazra/github-readme-stats): Add cards showing your cumulative GitHub statistics to your profile page
161 |
162 | ## Languages
163 |
164 | ### Javascript
165 |
166 | - [Beginner's Series to: JavaScript](https://channel9.msdn.com/Series/Beginners-Series-to-JavaScript?WT.mc_id=beginner-c9-niner): 51-part Javascript beginners course by Microsoft
167 | - [Deep Javascript: Theory & Techniques](https://exploringjs.com/deep-js/index.html): By Dr. Axel Rauschmayer)
168 | - [Javascript for Impatient Programmers](https://exploringjs.com/impatient-js/index.html): By Dr. Axel Rauschmayer
169 | - [Looping over arrays & objects in Javascript](https://medium.com/chingu/looping-over-arrays-and-objects-in-javascript-57e1188c1ba2): Options for looping
170 | - [Tackling Typescript: Upgrading from Javascript](https://exploringjs.com/tackling-ts/index.html): By Dr. Axel Rauschmayer
171 | - [You Dont Know JavaScript](https://github.com/getify/You-Dont-Know-JS): Book series diving deep into the core mechanisms of JavaScript
172 | - [JavaScript 30](https://javascript30.com/): Build 30 things with vanilla JS in 30 days with 30 tutorials
173 | - [Javascript Questions](https://github.com/lydiahallie/javascript-questions): JS Questions & Answers for interview prep!
174 |
175 | ### Python
176 |
177 | - [How to Use Object-Oriented Programming in Python](https://tinyurl.com/yyeqqu25): Comprehensive info on OOP in Python
178 | - [Data Structures & Algorithms in Python](https://tinyurl.com/y4y4jfhk): Overview of internal & user-defined data structures + algorithms in Python
179 | - [I Thought I Was Mastering Python Until I Discovered These Tricks](https://tinyurl.com/y5hjg6ho): Tips for Python Developers
180 |
181 | ### Code Snippets
182 |
183 | What are your short solutions to common problems in any language? Add them to
184 | the table below to share with others. Be sure to add your snippet in the
185 | `/codesnippets` directory and comment the code for the reader.
186 |
187 | | File name | Language | Description |
188 | |-----------------|------------|-----------------------------------------------|
189 | | [formatRawDate.js](./codesnippets/formatRawDate.js) | Javascript | Format a raw date |
190 | | [objectToFile.js](./codesnippets/objectToFile.js) | NodeJS | Write the contents of an object array to a file |
191 | | [reduceObject.js](./codesnippets/reduceObject.js) | Javascript | Use `.reduce` to process and array, returning an object with the results |
192 | | [validateDirPath.js](./codesnippets/validateDirPath.js) | NodeJS | Validate that the path exists and is a directory |
193 |
194 | ## Motivation
195 |
196 | - [You Know More Than You Think](https://medium.com/chingu/you-know-more-than-you-think-231cb232a578): How build up your confidence as a Dev
197 |
198 | ## Packages and Libraries
199 |
200 | ## Cloud Deployment
201 |
202 | - [Deploy React and Express to Heroku](https://daveceddia.com/deploy-react-express-app-heroku/): Step-by-step guide to create a React/Node app and deploy to Heroku
203 | - [How to deploy React App to GitHub Pages](https://dev.to/yuribenjamin/how-to-deploy-react-app-in-github-pages-2a1f): Simple instructions to deploy React app on GitHub Pages
204 |
205 | ## Teamwork
206 |
207 | ### Agile
208 |
209 | - [A Short Introduction to the Scrum Methodology](https://medium.com/chingu/a-short-introduction-to-the-scrum-methodology-7a23431b9f17): How to embrace change in a project.
210 |
211 | ### Teams
212 |
213 | - [What I Learned About Group Projects](https://medium.com/chingu/what-i-learned-about-group-projects-41bbfb9ffdcd): Tips from a Chingu on how to be successful in a group project
214 |
215 | ## Tools
216 |
217 | - [Introduction to Docker](https://dev.to/danko56666/intro-to-docker-3p42): An introduction into what docker is and how to use it.
218 | - [Zenhub 101: The Essential Guide](https://medium.com/chingu/zenhub-101-the-essential-guide-da46ce7aff9d): How to effectively use ZenHub to manage & track projects
219 | - [Introduction to Authentication with NextAuth](https://www.nextauth.org/add-google-authentication-to-nextjs): How to add authentication to your NextJs applications using NextAuth as an example
220 | ## Open Source Contribution
221 |
222 | - [A Beginner's Guide](https://dev.to/dailydotdev/how-to-contribute-to-open-source-projects-as-a-beginner-2h43)
223 | - [How to link your PR to an issue](https://docs.github.com/en/free-pro-team@latest/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue)
224 | - [How to create a PR on GitHub](https://www.digitalocean.com/community/tutorials/how-to-create-a-pull-request-on-github#update-local-repository)
225 |
226 | ## Productivity Tools
227 |
228 | - [Cloudinary](https://cloudinary.com/): A media service that stores, transforms, optimises, and delivers all your media assets.
229 | - [Sourcegraph](https://sourcegraph.com/): A software tool that allows you search all of your code.
230 | - [Insomnia](https://insomnia.rest/): A software tool to test API endpoints.
231 | - [Netlify](https://www.netlify.com/): Build, deploy, and scale modern web projects.
232 | - [Retool](https://retool.com/): Build internal tools without writing a line of code.
233 | - [Laravel Forge](https://forge.laravel.com/): Provision and deploy unlimited PHP applications.
234 | - [AWS Amplify](https://aws.amazon.com/amplify/): Fastest, easiest way to build mobile and web apps that scale.
235 | - [Auth0](https://auth0.com/): An easy to implement, adaptable authentication and authorisation platform.
236 | - [Garden](https://garden.io/): A cloud service that enables fast and efficient Kubernetes development.
237 | - [Bitrise](https://www.bitrise.io/): A fast, flexible, and scalable mobile CI/CD that simplifies development and deployment of mobile apps.
238 | - [Vercel](https://vercel.com/): Build and publish any front-end application in less than three clicks.
239 | - [EasyCron](https://www.easycron.com/): A service that runs all your cron jobs for you on the cloud.
240 | - [WakaTime](https://wakatime.com/): A tool that automatically report stats and metrics right from your code editor.
241 | - [EverSQL](https://www.eversql.com/): A service that predict performance bottlenecks and optimize SQL queries, using AI.
242 | - [Ngrok](https://ngrok.com/): A tool that provides an instant, secure URL to your localhost server through any NAT or firewall.
243 |
244 | ## Everything Else
245 |
246 | - [Complete list of Github Markdown Emoji's](https://gist.github.com/rxaviers/7360908): A complete list of emoji's you can use in Readme's.
247 | - [Emoji Cheatsheet](https://www.webfx.com/tools/emoji-cheat-sheet/): Emojis for Github, Discord, and more!
248 |
249 | - [gitmoji](https://gitmoji.carloscuesta.me/): More emojis for GitHub.
250 | - [spam mimic](http://spammimic.com/encode.shtml): An interesting website that encodes messages to a generic spam message.
251 |
--------------------------------------------------------------------------------
/assets/ChinguLogo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codesnippets/formatRawDate.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Format a raw date.
3 | * @param {String} rawDate Date in the format `yyyy-mm-ddThh:mm:ssZ`
4 | * @returns Date string formatted as `yyyy-mm-dd`
5 | */
6 | formatRawDate(rawDate) {
7 | const createdAt = new Date(rawDate);
8 | const month = ('0' + (createdAt.getMonth()+1)).slice(-2);
9 | const day = ('0' + createdAt.getDate()).slice(-2);
10 | return`${createdAt.getFullYear()}/${month}/${day}`;
11 | }
--------------------------------------------------------------------------------
/codesnippets/objectToFile.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs');
2 |
3 | /**
4 | * Write the contents of an object array to a file.
5 | * @param {String} filePath Full path name of the output file
6 | * @param {[String]} content Content to write
7 | * @returns {Promise} Promise resolved when file write is completed
8 | */
9 | const objectToFile = (filePath, content) => {
10 | return new Promise((resolve, reject) => {
11 | const file = fs.createWriteStream(filePath);
12 | for (const row of content) {
13 | file.write(row+'\n');
14 | }
15 | file.end();
16 | file.on('finish', () => {
17 | resolve('File write completed');
18 | });
19 | })
20 | }
--------------------------------------------------------------------------------
/codesnippets/reduceObject.js:
--------------------------------------------------------------------------------
1 | const membership = [
2 | {status: 'ACTIVE', statusDt: '2020-09-29'},
3 | {status: 'INACTIVE', statusDt: '2020-09-29'},
4 | {status: 'COMPLETED', statusDt: '2020-09-29'},
5 | {status: 'ACTIVE', statusDt: '2020-09-30'},
6 | ]
7 |
8 | // Before refactoring: Two passes over the membership object array.
9 | // But what if the membership array grows to 10K entries? What impact
10 | // would this have on performance?
11 | const count = membership.reduce((count, current) => {
12 | return ['ACTIVE', 'COMPLETED'].includes(current.status) ? count + 1 : count
13 | }, 0)
14 |
15 | const mostRecentDt = membership.reduce((mostRecentDt, current) => {
16 | return mostRecentDt >= current.statusDt ? mostRecentDt : current.statusDt
17 | }, '' )
18 |
19 | console.log(`Before: resulting count: ${ count } mostRecentDt: ${ mostRecentDt }`)
20 |
21 | // After refactoring: one pass over the membership object array and return an
22 | // object containing the aggregated results. Note that this is destructured
23 | // into two discrete constants containing the resulting values so we don't have
24 | // to use object notation to reference them.
25 | const {newCount, newMostRecentDt} = membership.reduce((result, current) => {
26 | result.newCount = ['ACTIVE', 'COMPLETED'].includes(current.status)
27 | ? result.newCount + 1 : result.newCount
28 | result.newMostRecentDt = result.newMostRecentDt >= current.statusDt
29 | ? result.newMostRecentDt : current.statusDt
30 | return result
31 | }, { newCount: 0, newMostRecentDt: '1969-01-01' } )
32 |
33 | console.log(`\nAfter: resulting count: ${ newCount } mostRecentDt: ${ newMostRecentDt }`)
--------------------------------------------------------------------------------
/codesnippets/validateDirPath.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs');
2 |
3 | /**
4 | * Validate that the path exists and is a directory
5 | * @static
6 | * @param {String} pathToDir Path specification
7 | * @returns {Number} 0: Directory exists; -1: Not found or inaccessible; -2: Not a directory
8 | */
9 | const validateDirPath = (pathToDir) => {
10 | try {
11 | const pathStat = fs.statSync(pathToDir);
12 | if (!pathStat.isDirectory()) {
13 | return -2; // Not a directory
14 | }
15 | return 0; // Path is a valid directory
16 | }
17 | catch(err) {
18 | return -1; // Not found or inaccessible
19 | }
20 | }
--------------------------------------------------------------------------------
/docs/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Covenant Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | In the interest of fostering an open and welcoming environment, we as
6 | contributors and maintainers pledge to making participation in our project and
7 | our community a harassment-free experience for everyone, regardless of age, body
8 | size, disability, ethnicity, gender identity and expression, level of experience,
9 | nationality, personal appearance, race, religion, or sexual identity and
10 | orientation.
11 |
12 | ## Our Standards
13 |
14 | Examples of behavior that contributes to creating a positive environment
15 | include:
16 |
17 | * Using welcoming and inclusive language
18 | * Being respectful of differing viewpoints and experiences
19 | * Gracefully accepting constructive criticism
20 | * Focusing on what is best for the community
21 | * Showing empathy towards other community members
22 |
23 | Examples of unacceptable behavior by participants include:
24 |
25 | * The use of sexualized language or imagery and unwelcome sexual attention or
26 | advances
27 | * Trolling, insulting/derogatory comments, and personal or political attacks
28 | * Public or private harassment
29 | * Publishing others' private information, such as a physical or electronic
30 | address, without explicit permission
31 | * Other conduct which could reasonably be considered inappropriate in a
32 | professional setting
33 |
34 | ## Our Responsibilities
35 |
36 | Project maintainers are responsible for clarifying the standards of acceptable
37 | behavior and are expected to take appropriate and fair corrective action in
38 | response to any instances of unacceptable behavior.
39 |
40 | Project maintainers have the right and responsibility to remove, edit, or
41 | reject comments, commits, code, wiki edits, issues, and other contributions
42 | that are not aligned to this Code of Conduct, or to ban temporarily or
43 | permanently any contributor for other behaviors that they deem inappropriate,
44 | threatening, offensive, or harmful.
45 |
46 | ## Scope
47 |
48 | This Code of Conduct applies both within project spaces and in public spaces
49 | when an individual is representing the project or its community. Examples of
50 | representing a project or community include using an official project e-mail
51 | address, posting via an official social media account, or acting as an appointed
52 | representative at an online or offline event. Representation of a project may be
53 | further defined and clarified by project maintainers.
54 |
55 | ## Enforcement
56 |
57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
58 | reported by contacting the project team at jdmedlock@gmail.com. All
59 | complaints will be reviewed and investigated and will result in a response that
60 | is deemed necessary and appropriate to the circumstances. The project team is
61 | obligated to maintain confidentiality with regard to the reporter of an incident.
62 | Further details of specific enforcement policies may be posted separately.
63 |
64 | Project maintainers who do not follow or enforce the Code of Conduct in good
65 | faith may face temporary or permanent repercussions as determined by other
66 | members of the project's leadership.
67 |
68 | ## Attribution
69 |
70 | This Code of Conduct is adapted from
71 |
72 | - [Axios](https://github.com/axios/axios)
73 | - [Contributor Covenant][homepage], version 1.4, available at
74 | [http://contributor-covenant.org/version/1/4][version]
75 |
76 | [homepage]: http://contributor-covenant.org
77 | [version]: http://contributor-covenant.org/version/1/4/
--------------------------------------------------------------------------------
/docs/COLLABORATOR_GUIDE.md:
--------------------------------------------------------------------------------
1 | # Collaborator Guide
2 |
3 | As a collaborator you will be adding and updating content to be share with
4 | others involved in Development activity from across the globe. This guide will
5 | help you understand your role and the responsibilities that come with being a
6 | collaborator.
7 |
8 | 1. __Adhere to and help enforce the Code of Conduct.__ It is expected that you
9 | have read the [code of conduct](https://github.com/chingu-voyages/MegaResourceList/blob/development/docs/CODE_OF_CONDUCT.md)
10 | and that you agree to live by it. This community should be friendly and
11 | welcoming.
12 |
13 | 1. __Triage issues.__ As a collaborator you may help sort through the issues
14 | that are reported. Issues vary from bugs, regressions, feature requests,
15 | questions, etc. Apply the appropriate label(s) and respond as needed. If it is
16 | a legitimate request please address it, otherwise feel free to close the issue
17 | and include a comment with a suggestion on where to find support. If an issue
18 | has been inactive for more than a week (i.e, the owner of the issue hasn’t
19 | responded to you), close the issue with a note indicating stales issues are
20 | closed; it can always be reopened if needed. In the case of issues that require
21 | a code change encourage the owner to submit a PR. For less complex code changes,
22 | add a very simple and detailed checklist, apply the “first-timers-only” label,
23 | and encourage a newcomer to open source to get involved.
24 |
25 | 1. __Answer questions.__ It is not expected that you provide answers to
26 | questions that aren’t relevant, nor do you need to mentor people on how to use
27 | JavaScript, etc. If the question is not directly about the module, please close
28 | the issue. If the question stems from poor documentation, please update the
29 | docs and consider adding a code example. In any event try to be helpful and
30 | remember that there’s no such thing as a stupid question.
31 |
32 | 1. __Assist with PRs.__ By encouraging contributors to supply a PR for their
33 | own issue this is ideally where most of your attention will be focused. Keep a
34 | few things in mind as you review PRs.
35 | - When fixing a bug: does the PR adequately solve the problem without
36 | introducing any regressions?
37 | - When implementing a feature: does the feature fit within the scope of axios?
38 | - When removing functionality: is it properly deprecated with a warning?
39 | - When introducing functionality: is the API predictable?
40 | - Does the new code work for all supported platforms/browsers?
41 | - Do the tests and linting pass CI?
42 | - Are there tests to validate the changes that have been made?
43 |
44 | 1. __Fix bugs and implement features.__ When things need to be fixed or
45 | implemented and a PR can’t wait, you may do things yourself. You should still
46 | submit a PR yourself and get it checked off by at least one other contributor.
47 | Keep the points from number 4 in consideration as you push your code.
48 |
49 | Thank you again for your help as a collaborator and in making axios community
50 | great! If you have any questions, or need any assistance please feel free to
51 | contact another collaborator or the owner.
52 |
53 | ## Attribution
54 |
55 | This guide is adapted from the [Axios](https://github.com/axios/axios) project.
--------------------------------------------------------------------------------
/docs/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | We welcome all contributions. These guidelines are intended to provide
4 | Contributors with the information you'll need to add useful content to this
5 | repo, while maintaining consistency for the reader.
6 |
7 | ## Process
8 |
9 | Sharing a resource is easy!
10 |
11 | 1. Clone this repo
12 | 2. Create a feature branch
13 | 3. Add your resource to the appropriate category & test it to make sure it
14 | is consistent with how other resources are formatted.
15 | 4. Create a Pull Request (PR)
16 |
17 | That's it! An admin will review and approve your PR. If there are any questions
18 | about your contribution we'll ask them or request changes through the PR
19 | process.
20 |
21 | ## Content Style
22 |
23 | Content should be added under a list of categories and subcategories. If the
24 | resource you are adding applies to more than one category don't duplicate it.
25 | Simply add it to the most relevant category.
26 |
27 | The entry you create should be follow this template:
28 | ```
29 | - [resource-title](url):
30 | ```
31 | Specifying a `resource-title` and its `url` is easy since you can copy it from
32 | the site containing the resource.
33 |
34 | The `` is just that! A short description to give the
35 | reader an idea of what information it contains and why it's useful.
36 |
37 | ## Commit Messages
38 |
39 | Commit messages should be formatted using the following pattern:
40 | ```
41 | :
42 |
43 |
44 |
45 | Resolves:
46 | See also:
47 | ```
48 |
49 | _Type_ describes the nature of the change and should be one of the following:
50 |
51 | - `feature`: a new feature
52 | - `fix`: a bug fix
53 | - `docs`: changes to documentation
54 | - `style`: formatting, missing semi colons, etc; no code change
55 |
56 | _Subject_ is a short imperative statement of no more than 50 characters that
57 | describes the intent of the commit.
58 |
59 | _Body_ provides a more detailed explanation of the context, why, and what of
60 | the changes included in the commit. Remember that the body shouldn't describe
61 | how the code operates. Comments within the code should describe how it
62 | functions when and where necessary. Be sure to separate the body from other
63 | parts of the commit message using blank lines.
64 |
65 | _Resolves_ documents one or more issues the commit closes. These should be
66 | specified as URL's to those issues. Specify this as 'N/a' if the commit isn't
67 | associated with an issue.
68 |
69 | _See also_ may be used to reference any other supporting documentation. For
70 | example, URL's to Gist's.
71 |
72 | ### Git Branches
73 |
74 | 
75 |
76 | - `master`: Only updated from PR's from the `development` branch for release.
77 | This branch always reflects the current production release.
78 | - `development`: Reflects the candidate code for the next release. Developers
79 | work in working branches, which are then pulled into this branch. All code
80 | pulled into this branch must be tested and undergo peer review as part of the
81 | PR process.
82 | - `working branches`: Are individual branches created by each developer when
83 | they are working on changes and bug fixes. There are 4 basic types of branches:
84 | bug, feature, refactor and style, after the type comes the name, it should
85 | specify on top of the branch type. For example feature/course-review.
86 |
87 | ## Issues
88 |
89 | If you find an error feel free to create a PR fixing it!
90 |
91 | If you are unable to do that feel free to open an
92 | [issue](https://github.com/chingu-voyages/ChinguResourceList/issues).
93 |
94 | You may also open an issue if you have a question or an idea for how to make
95 | this repo better.
96 |
--------------------------------------------------------------------------------
/docs/Git - Team Workflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chingu-voyages/ChinguResourceList/7901fdf885e883213b08fd843f45ecfd020b7f81/docs/Git - Team Workflow.png
--------------------------------------------------------------------------------