├── .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 Logo](./assets/ChinguLogo.svg)
Chingu Resource List
2 |
3 | :notebook: A crowd-sourced list of resources for Developers & Teams :notebook: 4 | 5 | [![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](./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 | ![Neighborhood Git Workflow](https://github.com/jdmedlock/chinguxbot/blob/development/docs/Git%20-%20Team%20Workflow.png) 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 --------------------------------------------------------------------------------