├── .eslintrc.json ├── .gitignore ├── CONTRIBUTE.md ├── README.md ├── next.config.ts ├── package-lock.json ├── package.json ├── postcss.config.mjs ├── public ├── file.svg ├── globe.svg ├── images │ └── frontend-resources-showcase.png ├── logo.png ├── next.svg ├── og-frontend-resources.png ├── vercel.svg └── window.svg ├── src └── app │ ├── api │ └── resources │ │ └── route.ts │ ├── components │ ├── App.tsx │ ├── CategoryFilter.tsx │ ├── ResourceCard.tsx │ ├── SearchBar.tsx │ ├── Tag.tsx │ └── TechIcon.tsx │ ├── data │ └── resources.ts │ ├── favicon.ico │ ├── fonts │ ├── GeistMonoVF.woff │ └── GeistVF.woff │ ├── globals.css │ ├── layout.tsx │ ├── lib │ └── mongodb.ts │ ├── models │ └── Resource.ts │ ├── page.tsx │ ├── scripts │ └── migrate.ts │ ├── types │ └── resource.ts │ └── utils │ └── tagColors.ts ├── tailwind.config.ts └── tsconfig.json /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/core-web-vitals", "next/typescript"] 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.* 7 | .yarn/* 8 | !.yarn/patches 9 | !.yarn/plugins 10 | !.yarn/releases 11 | !.yarn/versions 12 | 13 | # testing 14 | /coverage 15 | 16 | # next.js 17 | /.next/ 18 | /out/ 19 | 20 | # production 21 | /build 22 | 23 | # misc 24 | .DS_Store 25 | *.pem 26 | 27 | # debug 28 | npm-debug.log* 29 | yarn-debug.log* 30 | yarn-error.log* 31 | 32 | # env files (can opt-in for committing if needed) 33 | .env* 34 | 35 | # vercel 36 | .vercel 37 | 38 | # typescript 39 | *.tsbuildinfo 40 | next-env.d.ts 41 | -------------------------------------------------------------------------------- /CONTRIBUTE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codesandtags/frontend-resources/fc166daf1be554c49e7fdbeb9cb6c49d9983b28f/CONTRIBUTE.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Front End Documentation 2024 🚀 2 | 3 | > 🔥 🔥A curated list of awesome useful resources for Front-End 🔥 4 | 5 | # Index 6 | 7 | - [Accessibility - A11Y](#accessibility---a11y) 8 | - [Angular in general & Angular 5+](#angular-in-general--angular-5) 9 | - [Animation on HTML + CSS + SVG](#animation-on-html--css--svg) 10 | - [Artificial Intelligence / AGI](#artificial-intelligence--agi) 11 | - [Awesome and mad projects on JavaScript / CSS 😱](#awesome-and-mad-projects-on-javascript--css-) 12 | - [Automation and Task](#automation-and-task) 13 | - [Books](#books) 14 | - [Bundlers (Webpack)](#bundlers-webpack) 15 | - [CSS3 & SCSS](#css3--scss) 16 | - [Challenges online for JavaScript](#challenges-online-for-javascript) 17 | - [Crowdfunding sites to achieve the ideas and creative projects](#crowdfunding-sites-to-achieve-the-ideas-and-creative-projects) 18 | - [Databases](#databases) 19 | - [Data Visualization / D3](#data-visualization--d3) 20 | - [EmberJS](#emberjs) 21 | - [Freelance Webs or Jobs Search Pages for Tech](#freelance-webs-or-jobs-search-pages-for-tech) 22 | - [Functional Programming in JavaScript](#functional-programming-in-javascript) 23 | - [Git](#git) 24 | - [HTML5](#html5) 25 | - [JavaScript / TypeScript](#javascript--typescript) 26 | - [JavaScript Testing](#javascript-testing) 27 | - [Jekyll Templates](#jekyll-templates) 28 | - [Micro Front-End](#micro-front-end) 29 | - [Monitoring apps and logging messages](#monitoring-apps-and-logging-messages) 30 | - [NodeJS](#nodejs) 31 | - [Other Interesting Articles or Pages](#other-interesting-articles-or-pages) 32 | - [Performance](#performance) 33 | - [Progressive Web Apps / PWA](#progressive-web-apps--pwa) 34 | - [Public APIs](#public-apis) 35 | - [ReactJS & React Native](#reactjs--react-native) 36 | - [Regular Expressions](#regular-expressions) 37 | - [RxJs Reactive Programming with Javascript and Redux](#rxjs-reactive-programming-with-javascript-and-redux) 38 | - [Security](#security) 39 | - [Service Workers](#service-workers) 40 | - [Sketching / Wireframing / Mockup template / Images](#sketching--wireframing--mockup-template--images) 41 | - [Static websites generators](#static-websites-generators) 42 | - [Transpiling JavaScript](#transpiling-javascript) 43 | - [UX & UI](#ux--ui) 44 | - [WebGL](#webgl) 45 | - [Web Components](#web-components) 46 | - [WebTools for Front-End](#webtools-for-front-end) 47 | - [Web VR / Virtual Reality](#web-vr--virtual-reality) 48 | 49 | ## Accessibility - A11Y 50 | 51 | | Description | URL | 52 | | -------------------------------------------------------- | :--------------------------------------------------------------------------------------------------: | 53 | | ChromeVox Extension | http://www.chromevox.com/ | 54 | | Web Content Accessibility Guidelines 2.0 | https://www.w3.org/TR/WCAG20/ | 55 | | Web Accessibility in mind | http://webaim.org/standards/wcag/checklist | 56 | | Great tool which tell you how accessible is your webpage | http://wave.webaim.org/ | 57 | | WAI - ARIA Patterns | https://www.w3.org/TR/wai-aria-practices/ | 58 | | Plugin for Developer tools in Audits | https://chrome.google.com/webstore/detail/accessibility-developer-t/fpkknkljclfencbdbgkenhalefipecmb | 59 | | ARIA roles | https://www.w3.org/TR/wai-aria/roles#abstract_roles | 60 | | Accessibility article | http://adrianroselli.com/2016/03/be-wary-of-accessibility-guarantees-from-vendors.html | 61 | 62 | ## Angular in general & Angular 5+ 63 | 64 | | Description | URL | 65 | | -------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------: | --------------------------------- | ---------------------------------------------- | 66 | | Good fundamentals and basics for Angular 2 | https://egghead.io/series/angular-2-fundamentals | 67 | | Advanced Structure for Angular 1.x projects | https://omarfouad.com/ | 68 | | Rangle.io : Angular 2 Training | https://www.gitbook.com/book/rangle-io/ngcourse2/details | 69 | | Vaddin = Angular 2 + Material Design + PolymerJS | https://vaadin.com/elements | 70 | | Projectes made using Angular | https://www.madewithangular.com/#/ | 71 | | Example of sites built with angular | https://builtwith.angularjs.org/ | 72 | | Site tu run examples with Angular | http://plnkr.co/ | 73 | | Angular best practices | https://scotch.io/tutorials/angularjs-best-practices-directory-structure | 74 | | Pluralsigh Angular 2 | https://app.pluralsight.com/library/courses/angular-2-getting-started-update/table-of-contents | 75 | | Fetching on Angular 2 | https://namitamalik.github.io/Fetching-Data-in-Angular2/ | 76 | | Deploy angular 2 on heroku | https://medium.com/@ryanchenkie_40935/angular-cli-deployment-host-your-angular-2-app-on-heroku-3f266f13f352#.thginc3zg | 77 | | Custom Themes with Angular Material | https://blog.thoughtram.io/angular/2017/05/23/custom-themes-with-angular-material.html | Practice Excercises for Angular 2 | https://jcoop.io/angular-2-practice-exercises/ | 78 | | Augury to Debug Angular applications | https://augury.angular.io/ | 79 | | Deploy Angular 4 on Heroku | https://medium.com/@ervib/deploy-angular-4-app-with-express-to-heroku-6113146915ca | 80 | | Using env variables in Angular 4 | http://www.chrisjmendez.com/2017/05/24/using-dotenv-with-angular/ | 81 | | Explains what you need to do to update your app | https://angular-update-guide.firebaseapp.com/ | 82 | | Working with HttpInterceptors | https://medium.com/@ryanchenkie_40935/angular-authentication-using-the-http-client-and-http-interceptors-2f9d1540eb8 | 83 | | Checklist for performance in Angular | https://github.com/mgechev/angular-performance-checklist | 84 | | Testing Snipets with Angular 4+ | https://medium.com/spektrakel-blog/angular-testing-snippets-httpclient-d1dc2f035eb8 | 85 | | Testing HttpClient in Angular 4+ | https://medium.com/netscape/testing-with-the-angular-httpclient-api-648203820712 | 86 | | Angular Material | https://material.angular.io/components/categories | 87 | | Angular Flex Layout | https://tburleson-layouts-demos.firebaseapp.com/#/docs | 88 | | Angular Google Maps | https://angular-maps.com/ | 89 | | One of the most complete Angular Courses | https://ultimateangular.com/ | 90 | | How to build a website with angular and github pages | https://scotch.io/@collinl65/deploying-angular4-app-to-github-pages | 91 | | Why Angular has chosen Typescript | https://vsavkin.com/writing-angular-2-in-typescript-1fa77c78d8e8 | 92 | | Added link for Unit Testing in Angular + Karma + Jasmine | https://codecraft.tv/courses/angular/unit-testing/jasmine-and-karma/ | 93 | | Write Angular apps live & online | https://stackblitz.com | 94 | | NG Conf 2018 Talks | https://nitayneeman.com/posts/all-talks-from-ng-conf-2018/ | 95 | | Understanding Angular Material | https://medium.com/@tomastrajan/the-complete-guide-to-angular-material-themes-4d165a9d24d1 | 96 | | Scalable Angular Architecture | https://blog.strongbrew.io/A-scalable-angular2-architecture/ | 97 | | Scalable Angular Architecture | https://bulldogjob.pl/articles/539-scalable-angular-application-architecture | 98 | | Scalable JavaScript Architecture | https://es.slideshare.net/nzakas/scalable-javascript-application-architecture/108 | 99 | | Micro Front-Ends approach | https://medium.com/@tomsoderlund/micro-frontends-a-microservice-approach-to-front-end-web-development-f325ebdadc16 | 100 | | Angular Universal + Ngrx | https://blog.upstate.agency/setting-up-angular-universal-with-ngrx-30d97102be4d | 101 | | Translating Angular Apps with ngx-translate | https://www.codeandweb.com/babeledit/tutorials/how-to-translate-your-angular-app-with-ngx-translate | 102 | | Setting Angular with ngx-translate | https://medium.com/letsboot/translate-angular-4-apps-with-ngx-translate-83302fb6c10d | 103 | | Ivy explanation | https://herringtondarkholme.github.io/2018/02/19/angular-ivy/ | 104 | | Understanding Ivy Renderer | https://medium.com/@vyakymenko/understanding-angular-ivy-renderer-c9d07fc01b76 | 105 | | Deploying Angular app in nginx with docker | https://youtu.be/1jzztM7qJRY | 106 | | Installing nginx with homebrew | https://coderwall.com/p/dgwwuq/installing-nginx-in-mac-os-x-maverick-with-homebrew | 107 | | Performance on Angular Apps | https://blog.angular.io/3-tips-for-angular-runtime-performance-from-the-real-world-d467fbc8f66e | 108 | | Performance on Angular Apps 2 | https://netbasal.com/optimizing-the-performance-of-your-angular-application-f222f1c16354 | 109 | | Added authentication with Angular and Ngrx | http://mherman.org/blog/2018/04/17/authentication-in-angular-with-ngrx/#.WvzoLtMvzOQ | 110 | | Angular 6 complete project and beautiful UI | https://medium.com/@hamedbaatour/build-a-real-world-beautiful-web-app-with-angular-6-a-to-z-ultimate-guide-2018-part-i-e121dd1d55e | 111 | | Angular 6 summary features | https://medium.freecodecamp.org/angular-what-is-the-new-briefly-e6837348dd3a | 112 | | Angular testing great tutorial | https://blog.realworldfullstack.io/real-world-angular-part-9-unit-testing-c62ba20b1d93 | 113 | | Nice courses to review :D rxjs, angular, vue | https://coursetro.com/courses | 114 | | Ingrate Angular + Google Analytics | https://codeburst.io/using-google-analytics-with-angular-25c93bffaa18 | 115 | | Host listener good practices | https://medium.com/claritydesignsystem/angular-pseudo-events-d4e7f89247ee | 116 | | Angular Routing pattern | https://medium.com/@shairez/angular-routing-a-better-pattern-for-large-scale-apps-f2890c952a18 | 117 | | Angular navigation query params | https://blog.angularindepth.com/refresh-current-route-in-angular-512a19d58f6e | 118 | | Deploy one build with multiple environment files | https://www.jvandemo.com/how-to-use-environment-variables-to-configure-your-angular-application-without-a-rebuild/ | 119 | | Compodoc for Angular | https://github.com/compodoc/compodoc | 120 | | Performance for your angular projects | https://web.dev/angular | 121 | | Angular multilanguage datepicker | https://medium.com/@kristinahertmann/multi-language-date-formats-with-angular-material-b8598415d117 | 122 | 123 | ## Animation on HTML + CSS + SVG 124 | 125 | | Description | URL | 126 | | --------------------------- | :-----------------------------------------------: | 127 | | Animation with SVG | https://css-tricks.com/guide-svg-animations-smil/ | 128 | | Free 404 illustrations | https://www.kapwing.com/404-illustrations | 129 | | Animations and great styles | https://cssfx.dev/ | 130 | 131 | ## Artificial Intelligence / AGI 132 | 133 | | Description | URL | 134 | | -------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------: | 135 | | Open AI project | https://openai.com/ | 136 | | Open AI Systems | https://openai.com/systems/ | 137 | | An open-source software library for Machine Intelligence | https://www.tensorflow.org/ | 138 | | Tensor Flow in Action :D | https://medium.freecodecamp.com/big-picture-machine-learning-classifying-text-with-neural-networks-and-tensorflow-d94036ac2274 | 139 | | Artificial Intelligence Experiments with Google | https://aiexperiments.withgoogle.com/ | 140 | 141 | ## Awesome and mad projects on JavaScript / CSS 😱 142 | 143 | | Description | URL | 144 | | ------------------------------------ | :----------------------------------------------: | 145 | | Torrents on the Web | https://webtorrent.io/ | 146 | | HyperJS plugins | https://github.com/bnb/awesome-hyper | 147 | | Micro Front Ends | https://micro-frontends.org/ | 148 | | Picture with CSS and multiple layers | http://diana-adrianne.com/purecss-francine/ | 149 | | Mario Kart only with CSS | https://codeburst.io/mario-kart-css-7572bd2ce608 | 150 | 151 | ## Automation and Task 152 | 153 | | Description | URL | 154 | | --------------------------------------------------------------- | :------------------------------------------------------------------------------: | 155 | | Great article which explains differences between Grunt and Gulp | http://blog.koalite.com/2015/06/grunt-o-gulp-que-uso/ | 156 | | Great generaetor for Gulp files | http://quenchjs.com/ | 157 | | Awesome article for Gulp | https://css-tricks.com/gulp-for-beginners/#article-header-id-11 | 158 | | Good examples for style task with gulp | http://www.sitepoint.com/simple-gulpy-workflow-sass/ | 159 | | Package for Google PageSpeed in Grunt | https://www.npmjs.com/package/grunt-pagespeed | 160 | | 15 Tips for Gulp performance | http://stefanimhoff.de/2014/gulp-tutorial-15-performance-improvements-webp-gzip/ | 161 | | Webpack 2 Getting started | https://blog.madewithenvy.com/getting-started-with-webpack-2-ed2b86c68783 | 162 | 163 | ## Books 164 | 165 | | Description | URL | 166 | | -------------------- | :--------------------------------: | 167 | | Bookzz | http://es.bookzz.org/ | 168 | | Safari Books | https://www.safaribooksonline.com/ | 169 | | Resilient Web Design | https://resilientwebdesign.com/ | 170 | 171 | ## Bundlers (Webpack) 172 | 173 | | Description | URL | 174 | | ---------------------------------- | :---------------------------------------------------------------------------------------------------------: | 175 | | Webpack and Gulp example | http://stackoverflow.com/questions/33558396/gulp-webpack-or-just-webpack | 176 | | Next-generation ES6 module bundler | https://rollupjs.org/ | 177 | | RollupJS vs WebpackJS | https://medium.com/webpack/webpack-and-rollup-the-same-but-different-a41ad427058c | 178 | | Using Bundler Analyzer | https://medium.com/dailyjs/how-did-angular-cli-budgets-save-my-day-and-how-they-can-save-yours-300d534aae7a | 179 | | Angular bundler analyzer | https://alligator.io/angular/bundle-size/ | 180 | 181 | ## CSS3 & SCSS 182 | 183 | | Description | URL | 184 | | --------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------: | 185 | | Viewer in real time for multiple devices | https://browsersync.io/ | 186 | | Google Fonts for your website | https://www.google.com/fonts | 187 | | Page where you can ask for the pixel density of viewports | http://pixensity.com/ | 188 | | Ellipsis and truncate multiline text | https://imageoptim.com/es.html | 189 | | Show the properties which use prefix | http://shouldiprefix.com/ | 190 | | Great things about Flex Box and Support | http://www.slideshare.net/zomigi/leveling-up-with-flexbox-smartwebconf140923 | 191 | | CSS3 responsive layouts | http://www.slideshare.net/zomigi/css3-layout | 192 | | Bourbon lightweight mixing library for SASS | http://bourbon.io/ | 193 | | Tool to calculate Px to EM using a base | http://pxtoem.com/ | 194 | | Colour Palettes with ideas | http://www.colourlovers.com/ | 195 | | Super tool to design palettes | https://coolors.co/ | 196 | | Color palettes best fitted for branding | https://branition.com/colors/ | 197 | | Complete guide for FlexBox :D | https://css-tricks.com/snippets/css/a-guide-to-flexbox/ | 198 | | Flexbox explained in Gifs | https://medium.freecodecamp.com/an-animated-guide-to-flexbox-d280cf6afc35#.xwc1sdfnm | 199 | | Responsive layout toolkit for Sass | http://susy.oddbird.net/ | 200 | | Great article about how works susy | https://css-tricks.com/build-web-layouts-easily-susy/ | 201 | | Gallery 3D just using CSS | https://css-tricks.com/creating-a-3d-cube-image-gallery/ | 202 | | Some Input styles for Forms | http://callmenick.com/post/various-css-input-text-styles | 203 | | Tips about lengths in CSS | https://css-tricks.com/the-lengths-of-css/ | 204 | | Scroll Down effects | https://codyhouse.co/demo/page-scroll-effects/gallery.html | 205 | | Namespace and scalable CSS - BEM | http://getbem.com/introduction/ | 206 | | Namespace and scalable CSS - SMACSS | https://smacss.com/ | 207 | | Namespace standard for CSS - OOCSS | http://oocss.org/ | 208 | | Namespace and scalable CSS - SUITCSS | http://suitcss.github.io/ | 209 | | Manifesto motion UX | https://medium.com/ux-in-motion/creating-usability-with-motion-the-ux-in-motion-manifesto-a87a4584ddc | 210 | | Font Awesome Icons | http://fontawesome.io/ | 211 | | Great Icons just using fonts | http://weloveiconfonts.com/ | 212 | | Youn can customize your font icons here :D | https://css-tricks.com/examples/IconFont/ | 213 | | Icons free | https://icomoon.io/#icons | 214 | | Icons and more Icons in SVG :D | https://thenounproject.com/ | 215 | | Search more than 1.9 Millions of Icons | https://www.iconfinder.com/ | 216 | | Search more than 500k of Icons | https://www.flaticon.com/ | 217 | | Game to understand Flexbox | http://flexboxfroggy.com/ | 218 | | CSS prefixer online tool | http://pleeease.io/play/ | 219 | | Awesome tutorial for CSS Animations | https://learn.shayhowe.com/advanced-html-css/transitions-animations/ | 220 | | CSS Animation library | https://daneden.github.io/animate.css/? | 221 | | Tool to create clip-path in CSS | http://bennettfeely.com/clippy/ | 222 | | BEM - SMACSS advices | https://www.sitepoint.com/bem-smacss-advice-from-developers/ | 223 | | SOLID CSS : Open/Closed | https://csswizardry.com/2012/06/the-open-closed-principle-applied-to-css/ | 224 | | SOLID CSS : Single Responsability | https://csswizardry.com/2012/04/the-single-responsibility-principle-applied-to-css/ | 225 | | POST CSS | http://postcss.org/ | 226 | | Microinteraction examples :-) | http://inspire.blufra.me/css-examples-16-animations-effects-snippets/ | 227 | | Brand Colors Palette | https://brandcolors.net/ | 228 | | Images based on color | https://pixnio.com/images/40a0e0 | 229 | | Explained Flex with GIFs | https://medium.freecodecamp.org/even-more-about-how-flexbox-works-explained-in-big-colorful-animated-gifs-a5a74812b053 | 230 | | Atomic Design Approach | http://atomicdesign.bradfrost.com/ | 231 | | How to handle fallbacks and compatiblity in CSS | https://modernweb.com/using-css-fallback-properties-for-better-cross-browser-compatibility/ | 232 | | Atomic Design Book Online | http://bradfrost.com/blog/post/atomic-web-design/ | 233 | | Atomic Design, why we should use it? | https://platzi.com/blog/por-que-atomic-design/ | 234 | | Style Guides patterns | http://styleguides.io/ | 235 | | One execelent course for CSS Grid | https://cssgrid.io/ | 236 | | SASS to CSS online | https://www.sassmeister.com/ | 237 | | CSS Animation Course | https://courses.cssanimation.rocks/ | 238 | | CSS Fundaments Animation Course | https://www.sitepoint.com/premium/courses/animating-with-css-2941 | 239 | | Playground for CSS in live | http://dabblet.com/help/index.html | 240 | | Great explanation for EM vs REM and their usages | https://zellwk.com/blog/rem-vs-em/ | 241 | | | CSS3 Background Pattrns http://lea.verou.me/css3patterns/# | 242 | | Common errors with BEM | https://www.smashingmagazine.com/2016/06/battling-bem-extended-edition-common-problems-and-how-to-avoid-them/ | 243 | | CSS good styles guidelines | https://github.com/chris-pearce/css-guidelines#state-hooks | 244 | | Airbnb Style Guidelines | https://github.com/airbnb/css | 245 | | OOCSS Guide | https://www.smashingmagazine.com/2011/12/an-introduction-to-object-oriented-css-oocss/ | 246 | | All timing examples with CSS transitions | https://easings.net/ | 247 | | Cubic Bezier transitions testing online | http://cubic-bezier.com/#.17,.67,.83,.67 | 248 | | Architecture for CSS | https://scotch.io/tutorials/aesthetic-sass-1-architecture-and-style-organization | 249 | | Comparison for SASS Bourbon and Compass | https://stackshare.io/stackups/bourbon-vs-compass-vs-sass | 250 | | BEM CSS validator | https://torleif.nz/bem/ | 251 | | Understanding EM and REM | https://webdesign.tutsplus.com/tutorials/comprehensive-guide-when-to-use-em-vs-rem--cms-23984 | 252 | 253 | ## Challenges online for JavaScript 254 | 255 | | Description | URL | 256 | | ----------------------------------------------- | :------------------------------------------------------------: | 257 | | Code fast and code well with JavaScript | http://www.codewars.com/ | 258 | | Try to solve many problems using JavaScript | https://coderbyte.com/ | 259 | | Solve challenges online using JavaScript | https://www.codingame.com/start | 260 | | CodeFights with JavaScript become in a Hero | https://codefights.com/ | 261 | | Formulas for combinatory | http://www.vitutor.com/pro/1/a_f.html | 262 | | HackerRank one of the best pages for challenges | https://www.hackerrank.com | 263 | | Exercism | http://exercism.io/ | 264 | | JavaScript Algorithms | https://mgechev.github.io/javascript-algorithms/ | 265 | | Leet Code | https://leetcode.com/ | 266 | | JavaScript Problem and solutions | https://github.com/jeantimex/javascript-problems-and-solutions | 267 | 268 | ## Crowdfunding sites to achieve the ideas and creative projects. 269 | 270 | | Description | URL | 271 | | ----------------------------- | :-------------------------------------: | 272 | | gofundme | https://www.gofundme.com/ | 273 | | kickstarter | https://www.kickstarter.com/ | 274 | | List of invesment in Startups | https://www.crunchbase.com/#/home/index | 275 | 276 | ## Databases 277 | 278 | | Description | URL | 279 | | --------------- | :------------------------------------------------------: | 280 | | Mongo GUI Tools | https://scalegrid.io/blog/which-is-the-best-mongodb-gui/ | 281 | 282 | ## Data Visualization / D3 283 | 284 | | Description | URL | 285 | | -------------------------- | :---------------------------------------------------------------: | 286 | | Introduction to D3 in Map | http://maptimeboston.github.io/d3-maptime/#/ | 287 | | D3 official documentation | https://github.com/d3/d3/wiki | 288 | | D3 Fundamentals on Udacity | https://www.udacity.com/course/data-visualization-and-d3js--ud507 | 289 | 290 | ## EmberJS 291 | 292 | | Description | URL | 293 | | --------------------------------------- | :--------------------------------------------------------------------------------: | 294 | | Official Project | http://emberjs.com/ | 295 | | Comparision Angular 2 vs Ember vs React | https://smashingboxes.com/blog/choosing-a-front-end-framework-angular-ember-react/ | 296 | 297 | ## Freelance Webs or Jobs Search Pages for Tech 298 | 299 | | Description | URL | 300 | | ----------- | :--------------------------------------------------: | 301 | | TopTal | https://www.toptal.com/ | 302 | | UpWork | https://www.upwork.com | 303 | | Crossover | https://www.crossover.com/#we-build-worldclass-teams | 304 | | Dice | http://www.dice.com/ | 305 | | CodementorX | https://www.codementor.io/freelancer/apply | 306 | 307 | ## Functional Programming in JavaScript 308 | 309 | | Description | URL | 310 | | --------------------------------------------------------------- | :------------------------------------------------: | 311 | | A delightful language for reliable webapps. | http://elm-lang.org/ | 312 | | Guide for ELM Lang | https://guide.elm-lang.org/interop/javascript.html | 313 | | ClojureScript is a compiler for Clojure that targets JavaScript | https://clojurescript.org/ | 314 | | Monads in JavaScript | https://cwmyers.github.io/monet.js/ | 315 | | Ramda JS a JavaScript library for functional programming | http://ramdajs.com/ | 316 | 317 | ## Git 318 | 319 | | Description | URL | 320 | | --------------------------------------------- | :----------------------------------------: | 321 | | Excelent guide for commons commands using Git | https://githowto.com/ | 322 | | Editor HTML to Markdown for README.MD files | https://domchristie.github.io/to-markdown/ | 323 | | Editor Markdown to HTML for README.MD files | http://dillinger.io/ | 324 | | Great documentation to understand Git Flow | https://leanpub.com/git-flow/read | 325 | 326 | ## HTML5 327 | 328 | | Description | URL | 329 | | --------------------------------------------------------- | :---------------------------------------------------------------------: | 330 | | Things that should know about HTML5 | http://diveintohtml5.info/index.html | 331 | | Great article and examples for _Responsive Images_ | http://cloudinary.com/blog/automatically_art_directed_responsive_images | 332 | | Cool Framework for Responsives Emails | https://mjml.io/ | 333 | | MultiTouch on mobiles Great article with examples | http://www.html5rocks.com/es/mobile/touch/ | 334 | | Free videos cover for your background web pages or header | http://www.coverr.co/ | 335 | | Themes using Bootstrap | https://bootswatch.com/ | 336 | | HTML 5 Cheat sheet | https://websitesetup.org/html5-cheat-sheet/ | 337 | 338 | ## JavaScript / TypeScript 339 | 340 | | Description | URL | 341 | | ---------------------------------------------------------------- | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | 342 | | JavaScript Design Patterns Book | https://addyosmani.com/resources/essentialjsdesignpatterns/book/index.html | 343 | | Eloquent JavaScript | http://eloquentjavascript.net/ | 344 | | Javascript - The good parts | http://bdcampbell.net/javascript/book/javascript_the_good_parts.pdf | 345 | | Recopilation and good concepts for JavaScript | http://jstherightway.org/ | 346 | | Trends in libraries | https://www.javascripting.com/ | 347 | | Compress your JavaScript Code | http://jscompress.com/ | 348 | | ELM course for beginners | http://courses.knowthen.com/courses/elm-for-beginners/ | 349 | | One of the best tutorials for Promises in JavaScript ES6 | http://www.html5rocks.com/en/tutorials/es6/promises/ | 350 | | Dynamic validation of password using JavaScript | http://mlitzinger.com/blog/password-validator-js/ | 351 | | Best JS Books - Free | http://jsbooks.revolunet.com/ | 352 | | Understanding Closures | https://jherax.wordpress.com/2015/02/13/javascript-closures/ | 353 | | Compatibility Table for ES6 in browsers | http://kangax.github.io/compat-table/es6/ | 354 | | Differences between Apply and Call | http://hangar.runway7.net/javascript/difference-call-apply | 355 | | Show the key pressed in ASCII number code | http://keycode.info/ | 356 | | List of Unicode Emoji characters | http://www.fileformat.info/info/emoji/images.htm | 357 | | You Might Not Need JQuery | http://youmightnotneedjquery.com/ | 358 | | Super great explation about fetch API | https://jakearchibald.com/2015/thats-so-fetch/ | 359 | | Understanding Modules system in JavaScript | https://auth0.com/blog/javascript-module-systems-showdown/ | 360 | | Airbnb JavaScript style guide | https://github.com/airbnb/javascript | 361 | | How Airbnb use react | http://devnacho.com/2016/03/20/how-airbnb-uses-react/ | 362 | | ECMASCRIPT 2017 Draft | https://tc39.github.io/ecma262/#sec-intro | 363 | | Generate massive amounts of fake data in Node.js and the browser | https://github.com/marak/Faker.js/ | 364 | | TSLint rules for TypeScript | https://palantir.github.io/tslint/usage/rule-flags/ | 365 | | Tool for manage multiple projects with packages | https://github.com/lerna/lerna | 366 | | Library to use Promises | http://bluebirdjs.com/docs/api-reference.html | 367 | | Library to create Intros in the Web Sites as onboarding processs | https://introjs.com/ | 368 | | AST explorer to understand how works JavaScript | https://astexplorer.net/ | 369 | | Visual example how works the event loop in JavaScript | [Go to link](http://latentflip.com/loupe/?code=JC5vbignYnV0dG9uJywgJ2NsaWNrJywgZnVuY3Rpb24gb25DbGljaygpIHsKICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gdGltZXIoKSB7CiAgICAgICAgY29uc29sZS5sb2coJ1lvdSBjbGlja2VkIHRoZSBidXR0b24hJyk7ICAgIAogICAgfSwgMjAwMCk7Cn0pOwoKY29uc29sZS5sb2coIkhpISIpOwoKc2V0VGltZW91dChmdW5jdGlvbiB0aW1lb3V0KCkgewogICAgY29uc29sZS5sb2coIkNsaWNrIHRoZSBidXR0b24hIik7Cn0sIDUwMDApOwoKY29uc29sZS5sb2coIldlbGNvbWUgdG8gbG91cGUuIik7!!!PGJ1dHRvbj5DbGljayBtZSE8L2J1dHRvbj4%3D) | 370 | | Creating a custom JS library | https://hackernoon.com/a-complete-workshop-build-your-es6-code-into-a-library-using-webpack-80295faeb833 | 371 | | Create Typescript library | https://itnext.io/step-by-step-building-and-publishing-an-npm-typescript-package-44fe7164964c | 372 | | Practice JavaScript exercises | https://practicejs.com/ | 373 | | Intl NumberFormat in JavaScript | https://www.samanthaming.com/tidbits/30-how-to-format-currency-in-es6 | 374 | | Intl DateTimeForm | https://devhints.io/wip/intl-datetime | 375 | 376 | ## JavaScript Testing 377 | 378 | | Description | URL | 379 | | -------------------------------------- | :----------------------------------------------------------------------------------: | 380 | | JavaScript Testing for React. | http://airbnb.io/enzyme/ | 381 | | JavaScript Testing library for ReactJS | https://facebook.github.io/jest/ | 382 | | Futuristic JavaScript test runner | https://github.com/avajs/ava | 383 | | Ava configuration | https://hackernoon.com/ava-low-config-testing-for-javascript-71bd2d958745#.99ro16qxe | 384 | | Serenity JS | http://serenity-js.org/ | 385 | 386 | ## Static websites generators 387 | 388 | | Description | URL | 389 | | ------------------------------------------------------ | :----------------------------------------------------: | 390 | | Ramarulandac portfolio based on Indigo Jekyll Template | https://github.com/ramarulandac/ramarulandac.github.io | 391 | | Jekyll | https://jekyllrb.com/ | 392 | | Hugo | http://gohugo.io/ | 393 | 394 | ## NodeJS 395 | 396 | | Description | URL | 397 | | --------------------------------------------------------- | :-------------------------------------------------------------------------------------------------: | 398 | | Tips for NodeJS | https://hackernoon.com/19-things-i-learnt-reading-the-nodejs-docs-8a2dcc7f307f#.h394dcdc5 | 399 | | NVM repo and documentation | https://github.com/creationix/nvm#install-script | 400 | | Install NVM | http://dev.topheman.com/install-nvm-with-homebrew-to-use-multiple-versions-of-node-and-iojs-easily/ | 401 | | Runkit is a live Node notebook | https://runkit.com/home | 402 | | Advanced, production process manager for Node.js | http://pm2.keymetrics.io/ | 403 | | A progressive Node.js Framework for scalable applications | https://nestjs.com/ | 404 | 405 | ## Monitoring apps and logging messages 406 | 407 | | Description | URL | 408 | | ----------------------------------------------- | :-------------------------------------------------------: | 409 | | Great tool to log the error messages in the app | https://sentry.io/ | 410 | | Great tool for Monitoring for performance apps | https://gtmetrix.com/ | 411 | | Audits Performance apps | https://developers.google.com/web/tools/lighthouse/?hl=es | 412 | | Y Slow Rules | http://yslow.es/ | 413 | 414 | ## Other Interesting Articles or Pages 415 | 416 | | Description | URL | 417 | | -------------------------------------------------------------------------- | :-----------------------------------------------------------------------------------------------------------------: | 418 | | Using browserify | https://carlosazaustre.es/blog/browserify-desarrollando-tu-frontend-como-en-node-js/ | 419 | | Best pracitces for the web by Google | https://developers.google.com/web/#follow-best-practices | 420 | | Comparision for testing frameworks in Javascript | https://glebbahmutov.com/blog/picking-javascript-testing-framework/ | 421 | | Google Web Free Courses | https://developers.google.com/training/web/?hl=es-419 | 422 | | Logging in errors in clients | https://www.sitepoint.com/logging-errors-client-side-apps/ | 423 | | Interview Questions Front-End Fork | https://github.com/codesandtags/Front-end-Developer-Interview-Questions | 424 | | Collection of snippets for RegExo | http://snipplr.com/all/language/regex | 425 | | Tables vs Divs | https://www.smashingmagazine.com/2009/04/from-table-hell-to-div-hell/ | 426 | | Why use tables is stupid | https://www.hotdesign.com/seybold/ | 427 | | Responsive emails in Gmail | https://gsuite-developers.googleblog.com/2016/09/your-emails-optimized-for-every-screen-with-responsive-design.html | 428 | | Why to become in a Fullstack Developer using JavaScript | https://www.toptal.com/javascript/guide-to-full-stack-javascript-initjs | 429 | | Using nodeJS on Google Cloud | https://cloud.google.com/nodejs/getting-started/hello-world | 430 | | Great articles for angular and other stuffs | https://scotch.io/tag/angular-js | 431 | | Understanding the source maps in JavaScript + Browser | https://www.html5rocks.com/en/tutorials/developertools/sourcemaps/ | 432 | | Great resume and comparation about JavaScript Frameworks/Libraries in 2016 | https://risingstars2016.js.org/#framework | 433 | | How to become in Google Developer Expert | https://www.quora.com/What-does-it-take-to-be-a-Google-developer-expert | 434 | | Coding style guide for some famous languages | https://medium.freecodecamp.com/the-100-correct-coding-style-guide-5b594a1655f0 | 435 | | Gherkin Notation Template | http://docs.behat.org/en/v2.5/guides/1.gherkin.html | 436 | | JavaScript Tair, Podcast abaout Javascript | https://javascriptair.com/ | 437 | | JavaScript statistics and anothers topics with Front-End | https://stateofjs.com/2016/introduction/ | 438 | | Guide to success open source projects | https://opensource.guide/ | 439 | | Great article about Angular in 2017 | https://malcoded.com/posts/angular-top-2017 | 440 | | Timeline Web of Browsers | https://upload.wikimedia.org/wikipedia/commons/7/74/Timeline_of_web_browsers.svg | 441 | 442 | ## Performance 443 | 444 | | Description | URL | 445 | | -------------------------------------------------- | :-----------------------------------------------------------------------------------: | 446 | | Article to improve the performance | https://medium.com/grano/optimizing-angular-application-load-performance-6bb796b1a7c1 | 447 | | Guide to improve the performance with images | https://images.guide/ | 448 | | Nice talk about performance in the Google I/O 2018 | https://www.youtube.com/watch?v=Mv-l3-tJgGk | 449 | | Gzip compresion in apache | https://kinsta.com/es/base-de-conocimiento/habilitar-compresion-gzip/ | 450 | | Tool to check the Web Compression | https://checkgzipcompression.com/ | 451 | | Tool to check the Rich Information | https://richpreview.com/ | 452 | 453 | ## Progressive Web Apps / PWA 454 | 455 | | Description | URL | 456 | | --------------------------------------------- | :---------------------------------------------------------------------------------------------------------: | 457 | | WEB Real Time Communications | https://webrtc.github.io/samples/ | 458 | | PWA example | https://app.ft.com | 459 | | Web App install banner | https://developers.google.com/web/fundamentals/engage-and-retain/app-install-banners/ | 460 | | Web App Manifest | https://developers.google.com/web/fundamentals/engage-and-retain/web-app-manifest/ | 461 | | Added short tutorial for PWA with Angular CLI | https://medium.com/@amcdnl/service-worker-pwas-with-the-angular-cli-98a8f16d62d6 | 462 | | Is service worker ready? | https://jakearchibald.github.io/isserviceworkerready/ | 463 | | PWA directory | https://pwa-directory.appspot.com/ | 464 | | Credential Management API | https://developers.google.com/web/fundamentals/security/credential-management/?hl=es | 465 | | Web Payments API | https://developers.google.com/web/fundamentals/payments/?hl=es | 466 | | Deep explanation for fetch API | https://davidwalsh.name/fetch | 467 | | Detail offline cache persistence | https://jakearchibald.com/2014/offline-cookbook/#cache-persistence | 468 | | Advance concepts about caching | https://afasterweb.com/2017/01/31/upgrading-your-service-worker-cache/ | 469 | | Dexie to work with IndexDB | http://dexie.org/ | 470 | | Responsive Design by Google | https://developers.google.com/web/fundamentals/design-and-ux/responsive/ | 471 | | Responsive Images | https://css-tricks.com/responsive-images-css/ | 472 | | Understanding Background Sync | https://developers.google.com/web/updates/2015/12/background-sync | 473 | | Google Cloud Messaging Tool | https://developers.google.com/cloud-messaging/ | 474 | | Background Sync implementation | https://ponyfoo.com/articles/backgroundsync | 475 | | Firebase Functions as backend | https://firebase.google.com/docs/functions/ | 476 | | Geolocation API | https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/Using_geolocation | 477 | | User Media API | https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia | 478 | | Collection of JavaScript Libraries for PWA | https://github.com/GoogleChrome/workbox | 479 | | Browser Storage Limits | https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Browser_storage_limits_and_eviction_criteria | 480 | | Indexed DB Storage on Chrome | https://developer.chrome.com/apps/offline_storage#temporary | 481 | | App Manifest Generator Online | https://app-manifest.firebaseapp.com/ | 482 | 483 | ## Public APIs 484 | 485 | | Description | URL | 486 | | ---------------------------------------------------------- | :------------------------------------------------------------: | 487 | | Get information about countries, currencies, capitals, etc | https://restcountries.eu/ | 488 | | Get information about highligh places in Foursquare | https://developer.foursquare.com/ , https://vimeo.com/87793635 | 489 | | Get information and ratings about places | https://developers.google.com/places/documentation/ | 490 | | Get PlaceHolders and Mocked Data | https://jsonplaceholder.typicode.com/ | 491 | | Crunchbase API | https://data.crunchbase.com/ | 492 | | One of the biggest collection for Public Apis | https://github.com/toddmotto/public-apis | 493 | 494 | ## RxJs Reactive Programming with Javascript and Redux 495 | 496 | | Description | URL | 497 | | ---------------------------------------------------- | :---------------------------------------------------------------------------: | 498 | | Difference between Subject and Observable | https://javascript.tutorialhorizon.com/2017/03/23/rxjs-subject-vs-observable/ | 499 | | Understanding RXJX | https://academind.com/learn/javascript/understanding-rxjs/ | 500 | | Angular ngrx store repo | https://github.com/ngrx/platform | 501 | | ngrx course + effects | https://ultimateangular.com/ngrx-store-effects | 502 | | A great article to understand the selectors in redux | https://toddmotto.com/ngrx-store-understanding-state-selectors | 503 | 504 | ## ReactJS & React Native 505 | 506 | | Description | URL | 507 | | --------------------------------------------------- | :---------------------------------------------------------------------------------------------------: | 508 | | Examples for React in CodePen | https://medium.com/@sgroff04/how-i-learned-react-and-how-you-can-too-6714a48e984a#.ngks752s7 | 509 | | React Advance course on Pluralsight | https://app.pluralsight.com/library/courses/react-redux-react-router-es6/table-of-contents | 510 | | Handle immutables states on your JavaScript objects | https://facebook.github.io/immutable-js/ | 511 | | React Developer Tools for Chrome | https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi | 512 | | Redux Developer Tools for Chrome | https://chrome.google.com/webstore/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfibljd?hl=es | 513 | | How to test React Redux Components | http://ericnish.io/blog/how-to-unit-test-react-redux-components/ | 514 | | Redux mock store for Testing | http://arnaudbenard.com/redux-mock-store/ | 515 | | 10 tips for better redux apps | https://medium.com/javascript-scene/10-tips-for-better-redux-architecture-69250425af44#.yy7kbasb6 | 516 | | Optimizing React when is slow | https://medium.com/dailyjs/react-is-slow-react-is-fast-optimizing-react-apps-in-practice-394176a11fba | 517 | | So far the best free React Course | https://reacttraining.com/online/react-fundamentals | 518 | | React Hooks | https://usehooks.com/ | 519 | | Components building blocks in React | https://bit.dev/ | 520 | | Talk about using CSS in JS in React | https://speakerdeck.com/vjeux/react-css-in-js | 521 | | Styling components in React | https://blog.bitsrc.io/5-ways-to-style-react-components-in-2019-30f1ccc2b5b | 522 | | React Developer Tools Facebook Project | https://github.com/facebook/react-devtools | 523 | | React Lifecycle hooks examples | https://stackblitz.com/edit/react-lifecycle-hooks-example?file=index.js | 524 | | React Memoization | https://medium.com/@sdolidze/react-hooks-memoization-99a9a91c8853 | 525 | 526 | ## Regular Expressions 527 | 528 | - [Calculate regular expression for credit card](https://www.regular-expressions.info/creditcard.html) 529 | - [Useful regular Expression for developers](http://www.hongkiat.com/blog/regex-web-developers/) 530 | 531 | ## Service Workers 532 | 533 | | Description | URL | 534 | | --------------------------------------------------------- | :------------------------------------------------------------------------------------: | 535 | | Service Workers by Google | https://developers.google.com/web/fundamentals/getting-started/primers/service-workers | 536 | | Service Workers by MDN | https://developer.mozilla.org/en/docs/Web/API/Service_Worker_API | 537 | | Service Workers explanation | https://github.com/w3c/ServiceWorker/blob/master/explainer.md | 538 | | Service Workers explanation by Jake (Developer at Google) | https://jakearchibald.com/2014/using-serviceworker-today/ | 539 | | Oficial documentation for Service Workers | https://w3c.github.io/ServiceWorker/ | 540 | | Great documentation from Mozilla | https://serviceworke.rs/ | 541 | | Service Worker Pre Cache Google | https://github.com/GoogleChrome/sw-precache | 542 | | Service Worker Pre Cache webpack | https://www.npmjs.com/package/sw-precache-webpack-plugin | 543 | | Service Worker Polymer | https://elements.polymer-project.org/elements/platinum-sw | 544 | 545 | ## Security 546 | 547 | | Description | URL | 548 | | ----------------------------------------------------- | :-------------------------------------------------------------: | 549 | | JSON Web Token are an open, undistry standar RFC-7519 | https://jwt.io/ | 550 | | RFC 7519 specification JWT | https://tools.ietf.org/html/rfc7519 | 551 | | JWT vs Cookies | https://ponyfoo.com/articles/json-web-tokens-vs-session-cookies | 552 | 553 | ## Sketching / Wireframing / Mockup template / Images 554 | 555 | | Description | URL | 556 | | ------------------------------------------------------------------------------- | :------------------------------------------------------------------------: | 557 | | Sketching and Wireframing | https://moqups.com/ | 558 | | Sketching and Wireframing | https://www.mockflow.com/ | 559 | | Diagrams and Sketching | https://www.gliffy.com/ | 560 | | Sketching and wireframing for iPhone | http://iphonemockup.lkmc.ch/ | 561 | | IF you don't have images but you need a placeholder instead of, this is for you | http://placehold.it/ | 562 | | Conversor images to SVG | http://picsvg.com/sp/ | 563 | | Optimize your images (Available for grunt) | https://imageoptim.com/es.html | 564 | | New Format for Images Webp | https://developers.google.com/speed/webp/ https://caniuse.com/#search=webp | 565 | | Free resources images for web sites | https://www.freepik.com/ | 566 | | Images placeholder random / Unsplash API | https://picsum.photos/ | 567 | | Set of icons free | http://linea.io/ | 568 | 569 | ## Transpiling JavaScript 570 | 571 | | Description | URL | 572 | | -------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------: | 573 | | Google Traceur JavaScript.next-to-JavaScript-of-today | https://github.com/google/traceur-compiler | 574 | | Babel is a JavaScript compiler Use next generation JavaScript, today | https://babeljs.io/ | 575 | | From ES5 to ES6 | http://lebab.io/try-it | 576 | | Online IDE / Compiler / Interpreter | https://repl.it/languages | 577 | | Creating a Typescript library with NPM | https://itnext.io/step-by-step-building-and-publishing-an-npm-typescript-package-44fe7164964c | 578 | | Beautiful and useful tutorial for Webpack | https://www.valentinog.com/blog/webpack/ | 579 | 580 | ## UX & UI 581 | 582 | | Description | URL | 583 | | --------------------------------------- | :-----------------------------------------------------------------: | 584 | | Dropbox OnBoard | https://www.useronboard.com/how-dropbox-onboards-new-users/?slide=7 | 585 | | All kind of resources for UI and UX | https://resourcecards.com/ | 586 | | UX style guides pattern | https://ux.mailchimp.com/patterns/ | 587 | | UI patterns | http://ui-patterns.com/ | 588 | | Designs to get inspiration and examples | http://designsnips.com/ | 589 | | Patterns | http://patterntap.com/library | 590 | 591 | ## WebGL 592 | 593 | | Description | URL | 594 | | ---------------------- | :-------------------------------------: | 595 | | Eye WebGL | http://www.vill.ee/eye/ | 596 | | Experiences with WebGL | https://www.chromeexperiments.com/webgl | 597 | | Library for WebGL | http://www.pixijs.com/ | 598 | 599 | ## Web Components 600 | 601 | | Description | URL | 602 | | ---------------------------------------------------- | :------------------------: | 603 | | Components created by the community based on Polymer | https://customelements.io/ | 604 | 605 | ## WebTools for Front-End 606 | 607 | | Description | URL | 608 | | --------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------: | 609 | | Comparision for trends in Front-End based on npm | http://www.npmtrends.com/angular-vs-react-vs-backbone | 610 | | Google Page Speed Insights in improve the speed for your page | https://developers.google.com/speed/pagespeed/insights/ | 611 | | Optimize your images with a perfect balance in quality and file size | https://tinypng.com/ | 612 | | Super useful tool to mock data | https://www.mockaroo.com/ | 613 | | Library to parse CVS to JSON | http://papaparse.com/ | 614 | | TODO MVC for the most popular Frameworks | http://todomvc.com/ | 615 | | Yeoman Scalfolding / Generator | http://yeoman.io/ | 616 | | A powerful templating engine with inheritance, asynchronous control, and more | https://mozilla.github.io/nunjucks/ | 617 | | Uglify JS code online | https://skalman.github.io/UglifyJS-online/ | 618 | | Real HTTP Mocking online | http://www.mocky.io/ | 619 | | Mock response http | https://httpbin.org/ | 620 | | Awesome page with many of snipets on Bootstrap | http://bootsnipp.com/ | 621 | | Autoprefixer Online | https://autoprefixer.github.io/ | 622 | | Review compatibility of features for browsers | http://caniuse.com/ | 623 | | Beautiful placeholders using images from unsplash | https://unsplash.it/images | 624 | | Free sounds in Mp3 / Mp4 | http://soundbible.com/ | 625 | | Useful tool for editing and structure json data | http://www.jsoneditoronline.org/ | 626 | | Flags and information of all countries in the world | http://flagpedia.net/ | 627 | | Videos Free | https://pixabay.com/videos/ | 628 | | Awesome page to download sound effects | http://www.zapsplat.com/ | 629 | | NES sounds videogames | http://themushroomkingdom.net/media/smb/wav | 630 | | Awesome page to review offline documentation for Front End frameworks / libraries | http://devdocs.io/ | 631 | | Awesome dependency management for Windows. Works like homebrew | https://chocolatey.org/ | 632 | | Like the NPM , YARN is a better package manager for Node | https://yarnpkg.com/en/ | 633 | | NVM for windows :D | https://github.com/coreybutler/nvm-windows | 634 | | Another NVM for Windows, can be installed from choco | https://github.com/marcelklehr/nodist | 635 | | Polyfills dynamic according to your browser | https://polyfill.io/v2/docs/ | 636 | | Scape HTML | http://www.freeformatter.com/html-escape.html#ad-output | 637 | | Library to highligh code | https://highlightjs.org/ | 638 | | A Query language for your API | http://graphql.org/ | 639 | | A tool for transforming CSS with JavaScript | http://postcss.org/ | 640 | | Allows to show the work in progress | https://localtunnel.github.io/www/ | 641 | | Static web publishing for front-end projects | https://surge.sh/ | 642 | | Statistics for Browsers usage | http://gs.statcounter.com/ | 643 | | Fantastic free images | https://www.pexels.com/ | 644 | | One of the best enrich editors for web | https://ckeditor.com/download | 645 | | Lorem ipsum for images | http://lorempixel.com/ | 646 | | Restify REST scalable on Node.js | http://restify.com/ | 647 | | Unminify JS, CSS, HTML | http://unminify.com/ | 648 | | Ranking languages in 2017 | https://redmonk.com/sogrady/2017/06/08/language-rankings-6-17/ | 649 | | Minifier and Beautfier | http://minifycode.com/html-beautifier/ | 650 | | SCSS to CSS | http://www.cssportal.com/scss-to-css/ | 651 | | Emojis online | https://emojipedia.org/ | 652 | | Easy way to copy Emojis / Emoticons | https://www.emojicopy.com/ | 653 | | Cornify Easter Eggs | http://www.cornify.com/ | 654 | | Draw and create diagrams online | https://www.draw.io/ | 655 | | A lot of resources for web | http://codingheroes.io/resources/ | 656 | | Text Compare Diff Online | https://text-compare.com | 657 | | Homebrew Formulas | http://brewformulas.org/ | 658 | | Markdown online | https://dillinger.io/ | 659 | | jsPDF library | https://parall.ax/products/jspdf | 660 | | pdf.js library by Mozilla | https://mozilla.github.io/pdf.js/getting_started/ | 661 | | Markdown Online | https://stackedit.io | 662 | | Quotes Fancy with images | https://quotefancy.com/ | 663 | | Install Hooks in the project | https://www.atlassian.com/git/tutorials/git-hooks | 664 | | Build end-points using Front-End | https://hapijs.com/ | 665 | | Youtube videos to Mp3 | http://mp3musicsongs.com/en/download/Q73gUUr8Zlw/terminator-2-hasta-la-vista-baby.html | 666 | | Sounds in MP3 | https://www.albinoblacksheep.com/audio/mp3/300_This_is_Sparta.mp3 | 667 | | Jekyll installation tutorial | https://help.github.com/articles/setting-up-your-github-pages-site-locally-with-jekyll/ | 668 | | Favicon generator in multiples dimensions | https://www.favicon-generator.org/ | 669 | | Web XML Formatter | http://www.webtoolkitonline.com/xml-formatter.html | 670 | | Another JSON Formatter and converter tool :+1: awesome! | https://jsonformatter.org/ | 671 | | Tool to compare content online and resolve conflicts | http://www.mergely.com/ | 672 | | Nice tool to create dynamic interfaces based on JSON objects | http://www.jsontots.com/ | 673 | | Credit Cards Generator | https://names.igopaygo.com/es/tarjetas-de-credito | 674 | | Http Status Codes documentation and examples | https://httpstatuses.com/ | 675 | | Speed reading | http://spritzlet.com/ | 676 | | Speed reading | http://www.readsy.co/ | 677 | | Statistics for Browsers and Internet | http://gs.statcounter.com/ | 678 | | Retrieve the Schema Colors | https://www.schemecolor.com/javascript-logo-colors.php | 679 | | Shields for Git projects | https://shields.io/category/version | 680 | | Http Archive State of Web | https://httparchive.org/reports/state-of-the-web | 681 | | How much is the cost in your website? | https://whatdoesmysitecost.com/ | 682 | | Browser network limitations | https://docs.pushtechnology.com/cloud/latest/manual/html/designguide/solution/support/connection_limitations.html | 683 | | A great tool to understand the atomic design system | https://patternlab.io/ | 684 | | Microsoft Design System - Controls | https://developer.microsoft.com/en-us/fabric/#/ | 685 | | CORS anywhere to use a proxy | https://cors-anywhere.herokuapp.com/ | 686 | | Search Easy Node Modules | https://npms.io/ | 687 | | Has many documentation in one place | https://devdocs.io/ | 688 | | Search TypeScript Easy libraries | https://microsoft.github.io/TypeSearch/ | 689 | | Awesome tool to generate reponsive images | https://www.responsivebreakpoints.com/ | 690 | | Create your own logo | https://hatchful.shopify.com/ | 691 | | Google initiative to measure the performance | https://www.thinkwithgoogle.com/feature/testmysite | 692 | | Mocks created easy with Hoverfly | https://docs.hoverfly.io/en/latest/ | 693 | | Global Statistics for Web | https://gs.statcounter.com/ | 694 | | Front-End Full Stack Course | https://fullstackopen.com/en | 695 | 696 | ## Micro Front-End 697 | 698 | | Description | URL | 699 | | -------------------------------------------- | :----------------------------------------------------: | 700 | | One Framework to handle the micro front-ends | https://single-spa.js.org/ | 701 | | Micro Front-End Article | https://martinfowler.com/articles/micro-frontends.html | 702 | 703 | ## Web VR / Virtual Reality 704 | 705 | | Description | URL | 706 | | ---------------------------------------------------- | :----------------------------------------------------------: | 707 | | 3 Reasons WebVR Is The Future of Virtual Reality | https://uploadvr.com/3-reasons-webvr-future-virtual-reality/ | 708 | | Share and discover 3D Content | https://sketchfab.com/ | 709 | | React VR | https://facebook.github.io/react-vr/ | 710 | | Show the matrix for current browses supporting webvr | https://webvr.rocks/ | 711 | | Build immersive web VR using Vizor | https://vizor.io/ | 712 | | glTF GL Transmission Format for 3D assets | https://github.com/KhronosGroup/glTF/tree/2.0 | 713 | | Added link to threejs page JavaScript 3D | https://threejs.org/ | 714 | -------------------------------------------------------------------------------- /next.config.ts: -------------------------------------------------------------------------------- 1 | import type { NextConfig } from "next"; 2 | 3 | const nextConfig: NextConfig = { 4 | images: { 5 | remotePatterns: [ 6 | { 7 | hostname: "cdn.simpleicons.org", 8 | }, 9 | ], 10 | dangerouslyAllowSVG: true, 11 | contentDispositionType: "attachment", 12 | contentSecurityPolicy: "default-src 'self'; script-src 'none'; sandbox;", 13 | }, 14 | /* config options here */ 15 | // ... other config 16 | env: { 17 | MONGODB_URI: process.env.MONGODB_URI, 18 | }, 19 | }; 20 | 21 | export default nextConfig; 22 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "codesandtags-frontend-documentation", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev --turbopack", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint", 10 | "migrate": "npx ts-node src/app/scripts/migrate.ts" 11 | }, 12 | "description": "A curated list of awesome useful resources for Front-End", 13 | "dependencies": { 14 | "dotenv": "^16.4.7", 15 | "lucide-react": "^0.344.0", 16 | "mongodb": "^6.11.0", 17 | "mongoose": "^8.8.3", 18 | "next": "15.0.3", 19 | "react": "^18.3.1", 20 | "react-dom": "^18.3.1", 21 | "simple-icons": "^11.7.0" 22 | }, 23 | "devDependencies": { 24 | "@types/node": "^20.17.9", 25 | "@types/react": "^18", 26 | "@types/react-dom": "^18", 27 | "eslint": "^9.9.1", 28 | "eslint-config-next": "15.0.3", 29 | "postcss": "^8.4.35", 30 | "tailwindcss": "^3.4.1", 31 | "ts-node": "^10.9.2", 32 | "typescript": "^5.7.2" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /postcss.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('postcss-load-config').Config} */ 2 | const config = { 3 | plugins: { 4 | tailwindcss: {}, 5 | }, 6 | }; 7 | 8 | export default config; 9 | -------------------------------------------------------------------------------- /public/file.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/globe.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/images/frontend-resources-showcase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codesandtags/frontend-resources/fc166daf1be554c49e7fdbeb9cb6c49d9983b28f/public/images/frontend-resources-showcase.png -------------------------------------------------------------------------------- /public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codesandtags/frontend-resources/fc166daf1be554c49e7fdbeb9cb6c49d9983b28f/public/logo.png -------------------------------------------------------------------------------- /public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/og-frontend-resources.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codesandtags/frontend-resources/fc166daf1be554c49e7fdbeb9cb6c49d9983b28f/public/og-frontend-resources.png -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/window.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/api/resources/route.ts: -------------------------------------------------------------------------------- 1 | // app/api/resources/route.ts 2 | import { NextResponse } from "next/server"; 3 | import { connectDB } from "@/app/lib/mongodb"; 4 | import { Resource } from "@/app/models/Resource"; 5 | 6 | export async function GET() { 7 | try { 8 | await connectDB(); 9 | const resources = await Resource.find({}); 10 | return NextResponse.json(resources); 11 | } catch (error) { 12 | return NextResponse.json( 13 | { error: "Failed to fetch resources" }, 14 | { status: 500 } 15 | ); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/app/components/App.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState, useMemo } from "react"; 2 | import { Github, PlusCircle } from "lucide-react"; 3 | import { SearchBar } from "./SearchBar"; 4 | import { ResourceCard } from "./ResourceCard"; 5 | import { CategoryFilter } from "./CategoryFilter"; 6 | import type { Category } from "../types/resource"; 7 | 8 | import { resources } from "../data/resources"; 9 | import Image from "next/image"; 10 | 11 | function App() { 12 | const [search, setSearch] = useState(""); 13 | const [selectedCategory, setSelectedCategory] = useState( 14 | null 15 | ); 16 | const [likes, setLikes] = useState>({}); 17 | 18 | const filteredResources = useMemo(() => { 19 | return resources.filter((resource) => { 20 | const matchesSearch = 21 | resource.title.toLowerCase().includes(search.toLowerCase()) || 22 | resource.description.toLowerCase().includes(search.toLowerCase()) || 23 | resource.tags.some((tag: string) => 24 | tag.toLowerCase().includes(search.toLowerCase()) 25 | ); 26 | 27 | const matchesCategory = 28 | !selectedCategory || resource.category === selectedCategory; 29 | 30 | return matchesSearch && matchesCategory; 31 | }); 32 | }, [search, selectedCategory]); 33 | 34 | const handleLike = (id: string) => { 35 | setLikes((prev) => ({ 36 | ...prev, 37 | [id]: (prev[id] || 0) + 1, 38 | })); 39 | }; 40 | 41 | return ( 42 |
43 | {/* Navigation */} 44 | 79 | 80 | {/* Header */} 81 |
82 |
83 |
84 |

85 |
86 | 87 |
88 | 89 | 93 |
94 |
95 |
96 | 97 | {/* Main Content */} 98 |
99 |
100 | {filteredResources.map((resource) => ( 101 | 109 | ))} 110 |
111 | 112 | {filteredResources.length === 0 && ( 113 |
114 |

115 | No resources found matching your criteria. 116 |

117 |
118 | )} 119 |
120 |
121 | ); 122 | } 123 | 124 | export default App; 125 | -------------------------------------------------------------------------------- /src/app/components/CategoryFilter.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Category } from "../types/resource"; 3 | 4 | interface CategoryFilterProps { 5 | selectedCategory: Category | null; 6 | onSelect: (category: Category | null) => void; 7 | } 8 | 9 | const categories: Category[] = [ 10 | "Framework", 11 | "UI Library", 12 | "Tool", 13 | "Learning", 14 | "Performance", 15 | "Testing", 16 | "State Management", 17 | "CSS", 18 | "TypeScript", 19 | ]; 20 | 21 | export function CategoryFilter({ 22 | selectedCategory, 23 | onSelect, 24 | }: CategoryFilterProps) { 25 | return ( 26 |
27 | 38 | {categories.map((category) => ( 39 | 51 | ))} 52 |
53 | ); 54 | } 55 | -------------------------------------------------------------------------------- /src/app/components/ResourceCard.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Heart, ExternalLink } from "lucide-react"; 3 | import { Resource } from "../types/resource"; 4 | import { Tag } from "./Tag"; 5 | import { TechIcon } from "./TechIcon"; 6 | 7 | interface ResourceCardProps { 8 | resource: Resource; 9 | onLike: (id: string) => void; 10 | } 11 | 12 | export function ResourceCard({ resource, onLike }: ResourceCardProps) { 13 | return ( 14 |
15 |
16 |
17 |
18 | 19 |
20 |
21 |

22 | {resource.title} 23 |

24 | {/* 25 | {resource.category} 26 | */} 27 |
28 |
29 | 35 | 36 | 37 |
38 | 39 |

{resource.description}

40 | 41 |
42 | {resource.tags.map((tag) => ( 43 | 44 | ))} 45 |
46 | 47 |
48 | 55 | 56 | Added on {new Date(resource.dateAdded).toLocaleDateString()} 57 | 58 |
59 |
60 | ); 61 | } 62 | -------------------------------------------------------------------------------- /src/app/components/SearchBar.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Search } from "lucide-react"; 3 | 4 | interface SearchBarProps { 5 | value: string; 6 | onChange: (value: string) => void; 7 | } 8 | 9 | export function SearchBar({ value, onChange }: SearchBarProps) { 10 | return ( 11 |
12 | 13 | onChange(e.target.value)} 17 | placeholder="Search resources..." 18 | className="w-full pl-10 pr-4 py-2 rounded-lg bg-gray-700 border border-gray-600 text-gray-100 placeholder-gray-400 focus:border-blue-500 focus:ring-2 focus:ring-blue-500/20 transition-all" 19 | /> 20 |
21 | ); 22 | } 23 | -------------------------------------------------------------------------------- /src/app/components/Tag.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Tag as TagIcon } from "lucide-react"; 3 | import { getTagColors } from "../utils/tagColors"; 4 | 5 | interface TagProps { 6 | label: string; 7 | } 8 | 9 | export function Tag({ label }: TagProps) { 10 | const { bg, text } = getTagColors(label); 11 | 12 | return ( 13 | 16 | 17 | {label} 18 | 19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /src/app/components/TechIcon.tsx: -------------------------------------------------------------------------------- 1 | import { Code, Book, Gauge, Accessibility } from "lucide-react"; 2 | import Image from "next/image"; 3 | 4 | interface TechIconProps { 5 | name: string; 6 | className?: string; 7 | } 8 | 9 | const defaultIcons = { 10 | code: , 11 | book: , 12 | accessibility: , 13 | performance: , 14 | }; 15 | 16 | export function TechIcon({ name, className = "h-6 w-6" }: TechIconProps) { 17 | // Convert name to simple-icons format (lowercase, remove spaces) 18 | const iconName = name.toLowerCase().replace(/\s+/g, ""); 19 | 20 | if (defaultIcons[name as keyof typeof defaultIcons]) { 21 | return defaultIcons[name as keyof typeof defaultIcons]; 22 | } 23 | 24 | return ( 25 | {`${name} 32 | ); 33 | } 34 | -------------------------------------------------------------------------------- /src/app/data/resources.ts: -------------------------------------------------------------------------------- 1 | import { Resource } from "../types/resource"; 2 | 3 | export const resources: Resource[] = [ 4 | { 5 | id: "1", 6 | title: "Tailwind CSS", 7 | description: "A utility-first CSS framework for rapid UI development", 8 | url: "https://tailwindcss.com", 9 | category: "CSS", 10 | tags: ["css", "framework", "utility-first"], 11 | likes: 1234, 12 | dateAdded: "2024-03-15", 13 | iconName: "css3", 14 | }, 15 | { 16 | id: "2", 17 | title: "React Query", 18 | description: "Powerful asynchronous state management for React", 19 | url: "https://tanstack.com/query", 20 | category: "State Management", 21 | tags: ["react", "state", "async"], 22 | likes: 892, 23 | dateAdded: "2024-03-14", 24 | iconName: "react", 25 | }, 26 | { 27 | id: "3", 28 | title: "Vite", 29 | description: "Next Generation Frontend Tooling", 30 | url: "https://vitejs.dev", 31 | category: "Tool", 32 | tags: ["bundler", "development", "tool"], 33 | likes: 2156, 34 | dateAdded: "2024-03-13", 35 | iconName: "vite", 36 | }, 37 | { 38 | id: "chromevox-extension", 39 | title: "ChromeVox Extension", 40 | description: 41 | "Screen reader extension for Chrome browser to test accessibility", 42 | url: "http://www.chromevox.com/", 43 | category: "Tool", 44 | tags: ["accessibility", "a11y", "testing", "chrome-extension"], 45 | likes: 0, 46 | dateAdded: "2024-01-01", 47 | iconName: "chromewebstore", 48 | }, 49 | { 50 | id: "wcag-guidelines", 51 | title: "Web Content Accessibility Guidelines 2.0", 52 | description: "Official W3C guidelines for making web content accessible", 53 | url: "https://www.w3.org/TR/WCAG20/", 54 | category: "Learning", 55 | tags: ["accessibility", "standards", "w3c"], 56 | likes: 0, 57 | dateAdded: "2024-01-01", 58 | iconName: "accessibility", 59 | }, 60 | { 61 | id: "angular-material", 62 | title: "Angular Material", 63 | description: "Material Design components for Angular applications", 64 | url: "https://material.angular.io/components/categories", 65 | category: "UI Library", 66 | tags: ["angular", "material-design", "components"], 67 | likes: 0, 68 | dateAdded: "2024-01-01", 69 | iconName: "angular", 70 | }, 71 | { 72 | id: "typescript-playground", 73 | title: "TypeScript Playground", 74 | description: "Online editor for experimenting with TypeScript code", 75 | url: "https://www.typescriptlang.org/play", 76 | category: "TypeScript", 77 | tags: ["typescript", "editor", "development"], 78 | likes: 0, 79 | dateAdded: "2024-01-01", 80 | iconName: "typescript", 81 | }, 82 | { 83 | id: "redux-devtools", 84 | title: "Redux DevTools", 85 | description: "Browser extension for debugging Redux applications", 86 | url: "https://github.com/reduxjs/redux-devtools", 87 | category: "State Management", 88 | tags: ["redux", "debugging", "development"], 89 | likes: 0, 90 | dateAdded: "2024-01-01", 91 | iconName: "redux", 92 | }, 93 | { 94 | id: "flexbox-guide", 95 | title: "Complete Guide to Flexbox", 96 | description: "Comprehensive guide to CSS Flexbox layout", 97 | url: "https://css-tricks.com/snippets/css/a-guide-to-flexbox/", 98 | category: "CSS", 99 | tags: ["css", "flexbox", "layout"], 100 | likes: 0, 101 | dateAdded: "2024-01-01", 102 | iconName: "css", 103 | }, 104 | { 105 | id: "jest-testing", 106 | title: "Jest Testing Framework", 107 | description: 108 | "Delightful JavaScript Testing Framework with a focus on simplicity", 109 | url: "https://jestjs.io/", 110 | category: "Testing", 111 | tags: ["testing", "javascript", "framework"], 112 | likes: 0, 113 | dateAdded: "2024-01-01", 114 | iconName: "jest", 115 | }, 116 | { 117 | id: "web-vitals", 118 | title: "Web Vitals", 119 | description: "Essential metrics for a healthy site by Google", 120 | url: "https://web.dev/vitals/", 121 | category: "Performance", 122 | tags: ["performance", "metrics", "google"], 123 | likes: 0, 124 | dateAdded: "2024-01-01", 125 | iconName: "code", 126 | }, 127 | { 128 | id: "react-docs", 129 | title: "React Documentation", 130 | description: "Official React documentation and guides", 131 | url: "https://reactjs.org/docs/getting-started.html", 132 | category: "Framework", 133 | tags: ["react", "documentation", "javascript"], 134 | likes: 0, 135 | dateAdded: "2024-01-01", 136 | iconName: "react", 137 | }, 138 | { 139 | id: "webpack-bundler", 140 | title: "Webpack", 141 | description: "Static module bundler for modern JavaScript applications", 142 | url: "https://webpack.js.org/", 143 | category: "Tool", 144 | tags: ["bundler", "javascript", "build"], 145 | likes: 0, 146 | dateAdded: "2024-01-01", 147 | iconName: "webpack", 148 | }, 149 | { 150 | id: "angular-performance-checklist", 151 | title: "Angular Performance Checklist", 152 | description: "Comprehensive checklist for optimizing Angular applications", 153 | url: "https://github.com/mgechev/angular-performance-checklist", 154 | category: "Performance", 155 | tags: ["angular", "optimization", "best-practices"], 156 | likes: 0, 157 | dateAdded: "2024-01-01", 158 | iconName: "performance", 159 | }, 160 | { 161 | id: "typescript-deep-dive", 162 | title: "TypeScript Deep Dive", 163 | description: 164 | "Comprehensive guide to TypeScript features and best practices", 165 | url: "https://basarat.gitbook.io/typescript/", 166 | category: "TypeScript", 167 | tags: ["typescript", "guide", "advanced"], 168 | likes: 0, 169 | dateAdded: "2024-01-01", 170 | iconName: "gitbook", 171 | }, 172 | { 173 | id: "css-grid-course", 174 | title: "CSS Grid Course", 175 | description: "Complete CSS Grid course with interactive examples", 176 | url: "https://cssgrid.io/", 177 | category: "CSS", 178 | tags: ["css", "grid", "layout", "course"], 179 | likes: 0, 180 | dateAdded: "2024-01-01", 181 | iconName: "book", 182 | }, 183 | { 184 | id: "ngrx-store", 185 | title: "NgRx Store", 186 | description: "Reactive State Management for Angular applications", 187 | url: "https://ngrx.io/", 188 | category: "State Management", 189 | tags: ["angular", "redux", "state-management"], 190 | likes: 0, 191 | dateAdded: "2024-01-01", 192 | iconName: "ngrx", 193 | }, 194 | { 195 | id: "cypress-testing", 196 | title: "Cypress Testing Framework", 197 | description: "Modern web testing framework for end-to-end testing", 198 | url: "https://www.cypress.io/", 199 | category: "Testing", 200 | tags: ["testing", "e2e", "automation"], 201 | likes: 0, 202 | dateAdded: "2024-01-01", 203 | iconName: "cypress", 204 | }, 205 | { 206 | id: "material-ui", 207 | title: "Material-UI", 208 | description: "React components library implementing Material Design", 209 | url: "https://material-ui.com/", 210 | category: "UI Library", 211 | tags: ["react", "material-design", "components"], 212 | likes: 0, 213 | dateAdded: "2024-01-01", 214 | iconName: "mui", 215 | }, 216 | { 217 | id: "vue-framework", 218 | title: "Vue.js", 219 | description: 220 | "Progressive JavaScript framework for building user interfaces", 221 | url: "https://vuejs.org/", 222 | category: "Framework", 223 | tags: ["vue", "javascript", "frontend"], 224 | likes: 0, 225 | dateAdded: "2024-01-01", 226 | iconName: "vuedotjs", 227 | }, 228 | { 229 | id: "web-components-mdn", 230 | title: "Web Components MDN Guide", 231 | description: "Comprehensive guide to Web Components on MDN", 232 | url: "https://developer.mozilla.org/en-US/docs/Web/Web_Components", 233 | category: "Learning", 234 | tags: ["web-components", "standards", "documentation"], 235 | likes: 0, 236 | dateAdded: "2024-01-01", 237 | iconName: "docs", 238 | }, 239 | { 240 | id: "lighthouse", 241 | title: "Lighthouse", 242 | description: "Automated tool for improving web app quality", 243 | url: "https://developers.google.com/web/tools/lighthouse", 244 | category: "Performance", 245 | tags: ["performance", "audit", "google"], 246 | likes: 0, 247 | dateAdded: "2024-01-01", 248 | iconName: "lighthouse", 249 | }, 250 | { 251 | id: "storybook", 252 | title: "Storybook", 253 | description: "Tool for developing UI components in isolation", 254 | url: "https://storybook.js.org/", 255 | category: "Tool", 256 | tags: ["components", "development", "documentation"], 257 | likes: 0, 258 | dateAdded: "2024-01-01", 259 | iconName: "storybook", 260 | }, 261 | { 262 | id: "react-query", 263 | title: "React Query", 264 | description: "Powerful data synchronization for React applications", 265 | url: "https://react-query.tanstack.com/", 266 | category: "State Management", 267 | tags: ["react", "data-fetching", "cache"], 268 | likes: 0, 269 | dateAdded: "2024-01-01", 270 | iconName: "database", 271 | }, 272 | { 273 | id: "typescript-handbook", 274 | title: "TypeScript Handbook", 275 | description: "Official TypeScript documentation and guides", 276 | url: "https://www.typescriptlang.org/docs/handbook/", 277 | category: "TypeScript", 278 | tags: ["typescript", "documentation", "microsoft"], 279 | likes: 0, 280 | dateAdded: "2024-01-01", 281 | iconName: "typescript", 282 | }, 283 | { 284 | id: "css-animation-course", 285 | title: "CSS Animation Course", 286 | description: "Free course about CSS animations and transitions", 287 | url: "https://cssanimation.rocks/", 288 | category: "CSS", 289 | tags: ["css", "animation", "tutorial"], 290 | likes: 0, 291 | dateAdded: "2024-01-01", 292 | iconName: "css3", 293 | }, 294 | { 295 | id: "testing-library", 296 | title: "Testing Library", 297 | description: "Simple and complete testing utilities for JavaScript", 298 | url: "https://testing-library.com/", 299 | category: "Testing", 300 | tags: ["testing", "javascript", "dom"], 301 | likes: 0, 302 | dateAdded: "2024-01-01", 303 | iconName: "testinglibrary", 304 | }, 305 | { 306 | id: "web-vitals-essential", 307 | title: "Web Vitals Essential Metrics", 308 | description: "Essential metrics for healthy web applications", 309 | url: "https://web.dev/vitals/", 310 | category: "Performance", 311 | tags: ["performance", "metrics", "google"], 312 | likes: 0, 313 | dateAdded: "2024-01-01", 314 | iconName: "code", 315 | }, 316 | { 317 | id: "svelte-framework", 318 | title: "Svelte", 319 | description: "Cybernetically enhanced web applications framework", 320 | url: "https://svelte.dev/", 321 | category: "Framework", 322 | tags: ["svelte", "javascript", "reactive"], 323 | likes: 0, 324 | dateAdded: "2024-01-01", 325 | iconName: "svelte", 326 | }, 327 | { 328 | id: "chakra-ui", 329 | title: "Chakra UI", 330 | description: "Simple, modular and accessible component library", 331 | url: "https://chakra-ui.com/", 332 | category: "UI Library", 333 | tags: ["react", "components", "accessibility"], 334 | likes: 0, 335 | dateAdded: "2024-01-01", 336 | iconName: "chakraui", 337 | }, 338 | { 339 | id: "eslint", 340 | title: "ESLint", 341 | description: "Pluggable linting utility for JavaScript and TypeScript", 342 | url: "https://eslint.org/", 343 | category: "Tool", 344 | tags: ["linting", "javascript", "quality"], 345 | likes: 0, 346 | dateAdded: "2024-01-01", 347 | iconName: "eslint", 348 | }, 349 | { 350 | id: "mdn-javascript", 351 | title: "MDN JavaScript Guide", 352 | description: "Comprehensive JavaScript documentation and tutorials", 353 | url: "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide", 354 | category: "Learning", 355 | tags: ["javascript", "documentation", "tutorial"], 356 | likes: 0, 357 | dateAdded: "2024-01-01", 358 | iconName: "javascript", 359 | }, 360 | { 361 | id: "zustand", 362 | title: "Zustand", 363 | description: "Small, fast and scalable state management solution", 364 | url: "https://github.com/pmndrs/zustand", 365 | category: "State Management", 366 | tags: ["react", "state", "hooks"], 367 | likes: 0, 368 | dateAdded: "2024-01-01", 369 | iconName: "store", 370 | }, 371 | { 372 | id: "prettier", 373 | title: "Prettier", 374 | description: "Opinionated code formatter for JavaScript and TypeScript", 375 | url: "https://prettier.io/", 376 | category: "Tool", 377 | tags: ["formatting", "code-quality", "development"], 378 | likes: 0, 379 | dateAdded: "2024-01-01", 380 | iconName: "prettier", 381 | }, 382 | { 383 | id: "css-modules", 384 | title: "CSS Modules", 385 | description: "Local scope CSS for component-based development", 386 | url: "https://github.com/css-modules/css-modules", 387 | category: "CSS", 388 | tags: ["css", "modules", "components"], 389 | likes: 0, 390 | dateAdded: "2024-01-01", 391 | iconName: "cssmodules", 392 | }, 393 | { 394 | id: "vitest", 395 | title: "Vitest", 396 | description: "Next generation testing framework powered by Vite", 397 | url: "https://vitest.dev/", 398 | category: "Testing", 399 | tags: ["testing", "vite", "performance"], 400 | likes: 0, 401 | dateAdded: "2024-01-01", 402 | iconName: "vite", 403 | }, 404 | { 405 | id: "nextjs-framework", 406 | title: "Next.js", 407 | description: 408 | "The React Framework for Production with server-side rendering", 409 | url: "https://nextjs.org/", 410 | category: "Framework", 411 | tags: ["react", "ssr", "production"], 412 | likes: 0, 413 | dateAdded: "2024-01-01", 414 | iconName: "next", 415 | }, 416 | { 417 | id: "recoil-state", 418 | title: "Recoil", 419 | description: "State management library for React applications by Facebook", 420 | url: "https://recoiljs.org/", 421 | category: "State Management", 422 | tags: ["react", "state", "facebook"], 423 | likes: 0, 424 | dateAdded: "2024-01-01", 425 | iconName: "recoil", 426 | }, 427 | { 428 | id: "typescript-exercises", 429 | title: "TypeScript Exercises", 430 | description: "Interactive TypeScript exercises for learning and practice", 431 | url: "https://typescript-exercises.github.io/", 432 | category: "TypeScript", 433 | tags: ["typescript", "learning", "practice"], 434 | likes: 0, 435 | dateAdded: "2024-01-01", 436 | iconName: "typescript", 437 | }, 438 | { 439 | id: "sass-guidelines", 440 | title: "Sass Guidelines", 441 | description: 442 | "Opinionated styleguide for writing sane, maintainable and scalable Sass", 443 | url: "https://sass-guidelin.es/", 444 | category: "CSS", 445 | tags: ["sass", "css", "best-practices"], 446 | likes: 0, 447 | dateAdded: "2024-01-01", 448 | iconName: "sass", 449 | }, 450 | { 451 | id: "playwright", 452 | title: "Playwright", 453 | description: "Modern end-to-end testing framework by Microsoft", 454 | url: "https://playwright.dev/", 455 | category: "Testing", 456 | tags: ["testing", "e2e", "automation"], 457 | likes: 0, 458 | dateAdded: "2024-01-01", 459 | iconName: "code", 460 | }, 461 | { 462 | id: "web-performance-calendar", 463 | title: "Web Performance Calendar", 464 | description: "Collection of performance articles and best practices", 465 | url: "https://calendar.perfplanet.com/", 466 | category: "Performance", 467 | tags: ["performance", "optimization", "articles"], 468 | likes: 0, 469 | dateAdded: "2024-01-01", 470 | iconName: "performance", 471 | }, 472 | { 473 | id: "ant-design", 474 | title: "Ant Design", 475 | description: "Enterprise-class UI design language and React components", 476 | url: "https://ant.design/", 477 | category: "UI Library", 478 | tags: ["react", "components", "enterprise"], 479 | likes: 0, 480 | dateAdded: "2024-01-01", 481 | iconName: "ant", 482 | }, 483 | { 484 | id: "nx-tools", 485 | title: "Nx Build System", 486 | description: "Smart, extensible build framework for monorepos", 487 | url: "https://nx.dev/", 488 | category: "Tool", 489 | tags: ["monorepo", "build", "scaling"], 490 | likes: 0, 491 | dateAdded: "2024-01-01", 492 | iconName: "nx", 493 | }, 494 | { 495 | id: "web-dev", 496 | title: "web.dev", 497 | description: "Guidance for modern web development by Google", 498 | url: "https://web.dev/", 499 | category: "Learning", 500 | tags: ["google", "best-practices", "tutorials"], 501 | likes: 0, 502 | dateAdded: "2024-01-01", 503 | iconName: "google", 504 | }, 505 | { 506 | id: "mobx-state", 507 | title: "MobX", 508 | description: "Simple, scalable state management", 509 | url: "https://mobx.js.org/", 510 | category: "State Management", 511 | tags: ["state", "reactive", "javascript"], 512 | likes: 0, 513 | dateAdded: "2024-01-01", 514 | iconName: "mobx", 515 | }, 516 | { 517 | id: "postcss", 518 | title: "PostCSS", 519 | description: "Tool for transforming CSS with JavaScript plugins", 520 | url: "https://postcss.org/", 521 | category: "Tool", 522 | tags: ["css", "transformation", "plugins"], 523 | likes: 0, 524 | dateAdded: "2024-01-01", 525 | iconName: "postcss", 526 | }, 527 | { 528 | id: "css-in-js", 529 | title: "Emotion", 530 | description: "CSS-in-JS library designed for high performance styling", 531 | url: "https://emotion.sh/", 532 | category: "CSS", 533 | tags: ["css-in-js", "react", "styling"], 534 | likes: 0, 535 | dateAdded: "2024-01-01", 536 | iconName: "css3", 537 | }, 538 | { 539 | id: "remix-framework", 540 | title: "Remix", 541 | description: "Full stack web framework focusing on web standards", 542 | url: "https://remix.run/", 543 | category: "Framework", 544 | tags: ["react", "fullstack", "web-standards"], 545 | likes: 0, 546 | dateAdded: "2024-01-01", 547 | iconName: "remix", 548 | }, 549 | { 550 | id: "astro-framework", 551 | title: "Astro", 552 | description: "Modern static site builder with island architecture", 553 | url: "https://astro.build/", 554 | category: "Framework", 555 | tags: ["static-site", "performance", "modern"], 556 | likes: 0, 557 | dateAdded: "2024-01-01", 558 | iconName: "astro", 559 | }, 560 | { 561 | id: "jotai-state", 562 | title: "Jotai", 563 | description: "Primitive and flexible state management for React", 564 | url: "https://jotai.org/", 565 | category: "State Management", 566 | tags: ["react", "atomic", "state"], 567 | likes: 0, 568 | dateAdded: "2024-01-01", 569 | iconName: "atom", 570 | }, 571 | { 572 | id: "typescript-patterns", 573 | title: "TypeScript Design Patterns", 574 | description: "Collection of design patterns implemented in TypeScript", 575 | url: "https://refactoring.guru/design-patterns/typescript", 576 | category: "TypeScript", 577 | tags: ["patterns", "architecture", "best-practices"], 578 | likes: 0, 579 | dateAdded: "2024-01-01", 580 | iconName: "gitbook", 581 | }, 582 | { 583 | id: "styled-components", 584 | title: "Styled Components", 585 | description: "Visual primitives for the component age using CSS-in-JS", 586 | url: "https://styled-components.com/", 587 | category: "CSS", 588 | tags: ["css-in-js", "react", "styling"], 589 | likes: 0, 590 | dateAdded: "2024-01-01", 591 | iconName: "style", 592 | }, 593 | { 594 | id: "testing-playground", 595 | title: "Testing Playground", 596 | description: "Interactive sandbox for Testing Library queries", 597 | url: "https://testing-playground.com/", 598 | category: "Testing", 599 | tags: ["testing", "interactive", "practice"], 600 | likes: 0, 601 | dateAdded: "2024-01-01", 602 | iconName: "code", 603 | }, 604 | { 605 | id: "web-perf-today", 606 | title: "Web Performance Today", 607 | description: "Modern web performance optimization techniques", 608 | url: "https://www.webpagetest.org/learn/", 609 | category: "Performance", 610 | tags: ["optimization", "metrics", "tools"], 611 | likes: 0, 612 | dateAdded: "2024-01-01", 613 | iconName: "performance", 614 | }, 615 | { 616 | id: "radix-ui", 617 | title: "Radix UI", 618 | description: 619 | "Unstyled, accessible components for building high‑quality design systems", 620 | url: "https://www.radix-ui.com/", 621 | category: "UI Library", 622 | tags: ["react", "accessibility", "headless"], 623 | likes: 0, 624 | dateAdded: "2024-01-01", 625 | iconName: "radixui", 626 | }, 627 | { 628 | id: "turbopack", 629 | title: "Turbopack", 630 | description: "Incremental bundler optimized for JavaScript and TypeScript", 631 | url: "https://turbo.build/pack", 632 | category: "Tool", 633 | tags: ["bundler", "performance", "rust"], 634 | likes: 0, 635 | dateAdded: "2024-01-01", 636 | iconName: "turbo", 637 | }, 638 | { 639 | id: "frontend-masters", 640 | title: "Frontend Masters", 641 | description: "Advanced JavaScript, CSS and Framework Courses", 642 | url: "https://frontendmasters.com/", 643 | category: "Learning", 644 | tags: ["courses", "professional", "development"], 645 | likes: 0, 646 | dateAdded: "2024-01-01", 647 | iconName: "learn", 648 | }, 649 | { 650 | id: "xstate", 651 | title: "XState", 652 | description: "State machines and statecharts for modern web applications", 653 | url: "https://xstate.js.org/", 654 | category: "State Management", 655 | tags: ["state-machine", "typescript", "visualization"], 656 | likes: 0, 657 | dateAdded: "2024-01-01", 658 | iconName: "xstate", 659 | }, 660 | { 661 | id: "css-tricks", 662 | title: "CSS-Tricks", 663 | description: 664 | "Daily articles about CSS, HTML, JavaScript, and all things related to web design and development", 665 | url: "https://css-tricks.com/", 666 | category: "Learning", 667 | tags: ["css", "tutorials", "articles"], 668 | likes: 0, 669 | dateAdded: "2024-01-01", 670 | iconName: "css3", 671 | }, 672 | { 673 | id: "qwik-framework", 674 | title: "Qwik", 675 | description: 676 | "Framework that delivers instant loading web applications at any size", 677 | url: "https://qwik.builder.io/", 678 | category: "Framework", 679 | tags: ["performance", "resumable", "modern"], 680 | likes: 0, 681 | dateAdded: "2024-01-01", 682 | iconName: "qwik", 683 | }, 684 | { 685 | id: "javascript-info", 686 | title: "JavaScript.info", 687 | description: 688 | "Modern JavaScript Tutorial - from fundamentals to advanced topics", 689 | url: "https://javascript.info/", 690 | category: "Learning", 691 | tags: ["javascript", "tutorial", "comprehensive"], 692 | likes: 0, 693 | dateAdded: "2024-01-01", 694 | iconName: "javascript", 695 | }, 696 | { 697 | id: "egghead-courses", 698 | title: "Egghead.io", 699 | description: "Concise screencast tutorials for web development", 700 | url: "https://egghead.io/", 701 | category: "Learning", 702 | tags: ["video-tutorials", "professional", "bite-sized"], 703 | likes: 0, 704 | dateAdded: "2024-01-01", 705 | iconName: "video", 706 | }, 707 | { 708 | id: "web-dev-bootcamp", 709 | title: "Full Stack Open", 710 | description: 711 | "Deep dive into modern web development by University of Helsinki", 712 | url: "https://fullstackopen.com/en/", 713 | category: "Learning", 714 | tags: ["fullstack", "react", "nodejs"], 715 | likes: 0, 716 | dateAdded: "2024-01-01", 717 | iconName: "education", 718 | }, 719 | { 720 | id: "web-security-academy", 721 | title: "Web Security Academy", 722 | description: "Free online web security training from PortSwigger", 723 | url: "https://portswigger.net/web-security", 724 | category: "Learning", 725 | tags: ["security", "web", "hands-on"], 726 | likes: 0, 727 | dateAdded: "2024-01-01", 728 | iconName: "security", 729 | }, 730 | { 731 | id: "react-patterns", 732 | title: "React Patterns", 733 | description: 734 | "Common design patterns and best practices for React applications", 735 | url: "https://reactpatterns.com/", 736 | category: "Learning", 737 | tags: ["react", "patterns", "best-practices"], 738 | likes: 0, 739 | dateAdded: "2024-01-01", 740 | iconName: "pattern", 741 | }, 742 | { 743 | id: "javascript30", 744 | title: "JavaScript30", 745 | description: "30 Day Vanilla JS Coding Challenge by Wes Bos", 746 | url: "https://javascript30.com/", 747 | category: "Learning", 748 | tags: ["javascript", "challenge", "projects"], 749 | likes: 0, 750 | dateAdded: "2024-01-01", 751 | iconName: "challenge", 752 | }, 753 | { 754 | id: "css-grid-garden", 755 | title: "Grid Garden", 756 | description: "Interactive game for learning CSS grid layout", 757 | url: "https://cssgridgarden.com/", 758 | category: "Learning", 759 | tags: ["css", "grid", "interactive"], 760 | likes: 0, 761 | dateAdded: "2024-01-01", 762 | iconName: "game", 763 | }, 764 | { 765 | id: "testing-javascript", 766 | title: "Testing JavaScript", 767 | description: "Complete testing course by Kent C. Dodds", 768 | url: "https://testingjavascript.com/", 769 | category: "Learning", 770 | tags: ["testing", "javascript", "comprehensive"], 771 | likes: 0, 772 | dateAdded: "2024-01-01", 773 | iconName: "test", 774 | }, 775 | { 776 | id: "web-accessibility", 777 | title: "Web Accessibility Course", 778 | description: "Complete course on web accessibility by Google", 779 | url: "https://www.udacity.com/course/web-accessibility--ud891", 780 | category: "Learning", 781 | tags: ["accessibility", "a11y", "google"], 782 | likes: 0, 783 | dateAdded: "2024-01-01", 784 | iconName: "accessibility", 785 | }, 786 | { 787 | id: "algorithms-javascript", 788 | title: "JavaScript Algorithms", 789 | description: "Algorithms and data structures implemented in JavaScript", 790 | url: "https://github.com/trekhleb/javascript-algorithms", 791 | category: "Learning", 792 | tags: ["algorithms", "data-structures", "practice"], 793 | likes: 0, 794 | dateAdded: "2024-01-01", 795 | iconName: "algorithm", 796 | }, 797 | { 798 | id: "clean-code-javascript", 799 | title: "Clean Code JavaScript", 800 | description: "Clean Code concepts adapted for JavaScript", 801 | url: "https://github.com/ryanmcdermott/clean-code-javascript", 802 | category: "Learning", 803 | tags: ["clean-code", "best-practices", "principles"], 804 | likes: 0, 805 | dateAdded: "2024-01-01", 806 | iconName: "code", 807 | }, 808 | { 809 | id: "functional-light-js", 810 | title: "Functional-Light JavaScript", 811 | description: "Pragmatic, balanced FP in JavaScript by Kyle Simpson", 812 | url: "https://github.com/getify/Functional-Light-JS", 813 | category: "Learning", 814 | tags: ["functional-programming", "javascript", "book"], 815 | likes: 0, 816 | dateAdded: "2024-01-01", 817 | iconName: "function", 818 | }, 819 | { 820 | id: "web-components-tutorial", 821 | title: "Web Components Tutorial", 822 | description: "Complete guide to building web components", 823 | url: "https://open-wc.org/guides/", 824 | category: "Learning", 825 | tags: ["web-components", "tutorial", "standards"], 826 | likes: 0, 827 | dateAdded: "2024-01-01", 828 | iconName: "components", 829 | }, 830 | { 831 | id: "performance-workshop", 832 | title: "Web Performance Workshop", 833 | description: "Comprehensive workshop on web performance optimization", 834 | url: "https://frontendmasters.com/courses/web-performance/", 835 | category: "Learning", 836 | tags: ["performance", "optimization", "workshop"], 837 | likes: 0, 838 | dateAdded: "2024-01-01", 839 | iconName: "performance", 840 | }, 841 | { 842 | id: "type-hero", 843 | title: "TypeHero", 844 | description: 845 | "Interactive TypeScript challenges platform with community-driven learning and collaborative environment", 846 | url: "https://typehero.dev/", 847 | category: "Learning", 848 | tags: ["typescript", "challenges", "interactive", "community"], 849 | likes: 0, 850 | dateAdded: "2024-01-01", 851 | iconName: "typescript", 852 | }, 853 | { 854 | id: "motion-animation", 855 | title: "Motion", 856 | description: 857 | "Modern animation library for JavaScript and React with springs, layout animations, and timelines", 858 | url: "https://motion.dev/", 859 | category: "UI Library", 860 | tags: ["animation", "react", "javascript"], 861 | likes: 0, 862 | dateAdded: "2024-11-16", 863 | iconName: "framer", 864 | }, 865 | ]; 866 | -------------------------------------------------------------------------------- /src/app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codesandtags/frontend-resources/fc166daf1be554c49e7fdbeb9cb6c49d9983b28f/src/app/favicon.ico -------------------------------------------------------------------------------- /src/app/fonts/GeistMonoVF.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codesandtags/frontend-resources/fc166daf1be554c49e7fdbeb9cb6c49d9983b28f/src/app/fonts/GeistMonoVF.woff -------------------------------------------------------------------------------- /src/app/fonts/GeistVF.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codesandtags/frontend-resources/fc166daf1be554c49e7fdbeb9cb6c49d9983b28f/src/app/fonts/GeistVF.woff -------------------------------------------------------------------------------- /src/app/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | :root { 6 | --background: #ffffff; 7 | --foreground: #171717; 8 | } 9 | 10 | @media (prefers-color-scheme: dark) { 11 | :root { 12 | --background: #0a0a0a; 13 | --foreground: #ededed; 14 | } 15 | } 16 | 17 | body { 18 | color: var(--foreground); 19 | background: var(--background); 20 | font-family: Arial, Helvetica, sans-serif; 21 | } 22 | -------------------------------------------------------------------------------- /src/app/layout.tsx: -------------------------------------------------------------------------------- 1 | import type { Metadata } from "next"; 2 | import localFont from "next/font/local"; 3 | import "./globals.css"; 4 | 5 | const geistSans = localFont({ 6 | src: "./fonts/GeistVF.woff", 7 | variable: "--font-geist-sans", 8 | weight: "100 900", 9 | }); 10 | const geistMono = localFont({ 11 | src: "./fonts/GeistMonoVF.woff", 12 | variable: "--font-geist-mono", 13 | weight: "100 900", 14 | }); 15 | 16 | export const metadata: Metadata = { 17 | title: "Frontend Resources", 18 | description: " 🔥 A curated collection of frontend development resources", 19 | openGraph: { 20 | title: "Frontend Resources", 21 | description: "A curated collection of frontend development resources", 22 | url: "https://codesandtags.io", 23 | siteName: "Frontend Resources", 24 | images: [ 25 | { 26 | url: "/og-frontend-resources.png", // Add your OG image at public/og-frontend-resources.png 27 | width: 1200, 28 | height: 630, 29 | alt: "Frontend Resources Preview", 30 | }, 31 | ], 32 | locale: "en_US", 33 | type: "website", 34 | }, 35 | twitter: { 36 | card: "summary_large_image", 37 | title: "Frontend Resources", 38 | description: "A curated collection of frontend development resources", 39 | images: ["/og-frontend-resources.png"], 40 | }, 41 | }; 42 | 43 | export default function RootLayout({ 44 | children, 45 | }: Readonly<{ 46 | children: React.ReactNode; 47 | }>) { 48 | return ( 49 | 50 | 53 | {children} 54 | 55 | 56 | ); 57 | } 58 | -------------------------------------------------------------------------------- /src/app/lib/mongodb.ts: -------------------------------------------------------------------------------- 1 | import mongoose from "mongoose"; 2 | 3 | const MONGODB_URI = process.env.MONGODB_URI || ""; 4 | 5 | if (!MONGODB_URI) { 6 | throw new Error("Please define MONGODB_URI in .env file"); 7 | } 8 | 9 | let cached = global.mongoose; 10 | 11 | if (!cached) { 12 | cached = global.mongoose = { conn: null, promise: null }; 13 | } 14 | 15 | export async function connectDB() { 16 | try { 17 | if (cached.conn) return cached.conn; 18 | 19 | cached.promise = mongoose.connect(MONGODB_URI); 20 | cached.conn = await cached.promise; 21 | return cached.conn; 22 | } catch (error) { 23 | console.error("MongoDB connection error:", error); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/app/models/Resource.ts: -------------------------------------------------------------------------------- 1 | // models/Resource.ts 2 | import mongoose from "mongoose"; 3 | 4 | const ResourceSchema = new mongoose.Schema({ 5 | title: String, 6 | description: String, 7 | url: String, 8 | category: String, 9 | tags: [String], 10 | likes: Number, 11 | dateAdded: Date, 12 | iconName: String, 13 | }); 14 | 15 | export const Resource = 16 | mongoose.models.Resource || mongoose.model("Resource", ResourceSchema); 17 | -------------------------------------------------------------------------------- /src/app/page.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | import App from "./components/App"; 3 | 4 | export default function Home() { 5 | return ; 6 | } 7 | -------------------------------------------------------------------------------- /src/app/scripts/migrate.ts: -------------------------------------------------------------------------------- 1 | import { connectDB } from "../lib/mongodb"; 2 | import { Resource } from "../models/Resource"; 3 | import { resources } from "../data/resources"; 4 | 5 | async function migrate() { 6 | await connectDB(); 7 | 8 | try { 9 | await Resource.deleteMany({}); // Clear existing data 10 | await Resource.insertMany(resources); 11 | console.log("Data migration successful"); 12 | } catch (error) { 13 | console.error("Migration failed:", error); 14 | } 15 | process.exit(); 16 | } 17 | 18 | migrate(); 19 | -------------------------------------------------------------------------------- /src/app/types/resource.ts: -------------------------------------------------------------------------------- 1 | export interface Resource { 2 | id: string; 3 | title: string; 4 | description: string; 5 | url: string; 6 | category: Category; 7 | tags: string[]; 8 | likes: number; 9 | dateAdded: string; 10 | iconName: string; 11 | } 12 | 13 | export type Category = 14 | | "Framework" 15 | | "UI Library" 16 | | "Tool" 17 | | "Learning" 18 | | "Performance" 19 | | "Testing" 20 | | "State Management" 21 | | "CSS" 22 | | "TypeScript"; 23 | -------------------------------------------------------------------------------- /src/app/utils/tagColors.ts: -------------------------------------------------------------------------------- 1 | interface TagColorMap { 2 | [key: string]: { 3 | bg: string; 4 | text: string; 5 | }; 6 | } 7 | 8 | export const getTagColors = (tag: string): { bg: string; text: string } => { 9 | const colorMap: TagColorMap = { 10 | react: { bg: 'bg-blue-600/20', text: 'text-blue-300' }, 11 | vue: { bg: 'bg-emerald-600/20', text: 'text-emerald-300' }, 12 | angular: { bg: 'bg-red-600/20', text: 'text-red-300' }, 13 | typescript: { bg: 'bg-blue-600/20', text: 'text-blue-300' }, 14 | javascript: { bg: 'bg-yellow-600/20', text: 'text-yellow-300' }, 15 | css: { bg: 'bg-pink-600/20', text: 'text-pink-300' }, 16 | html: { bg: 'bg-orange-600/20', text: 'text-orange-300' }, 17 | framework: { bg: 'bg-purple-600/20', text: 'text-purple-300' }, 18 | library: { bg: 'bg-indigo-600/20', text: 'text-indigo-300' }, 19 | tool: { bg: 'bg-cyan-600/20', text: 'text-cyan-300' }, 20 | testing: { bg: 'bg-green-600/20', text: 'text-green-300' }, 21 | state: { bg: 'bg-violet-600/20', text: 'text-violet-300' }, 22 | async: { bg: 'bg-fuchsia-600/20', text: 'text-fuchsia-300' }, 23 | bundler: { bg: 'bg-amber-600/20', text: 'text-amber-300' }, 24 | development: { bg: 'bg-teal-600/20', text: 'text-teal-300' }, 25 | }; 26 | 27 | // Default color for tags without specific mapping 28 | const defaultColor = { bg: 'bg-gray-600/20', text: 'text-gray-300' }; 29 | 30 | return colorMap[tag.toLowerCase()] || defaultColor; 31 | }; -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import type { Config } from "tailwindcss"; 2 | 3 | export default { 4 | content: [ 5 | "./src/pages/**/*.{js,ts,jsx,tsx,mdx}", 6 | "./src/components/**/*.{js,ts,jsx,tsx,mdx}", 7 | "./src/app/**/*.{js,ts,jsx,tsx,mdx}", 8 | ], 9 | theme: { 10 | extend: { 11 | colors: { 12 | background: "var(--background)", 13 | foreground: "var(--foreground)", 14 | }, 15 | }, 16 | }, 17 | plugins: [], 18 | } satisfies Config; 19 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2017", 4 | "lib": ["dom", "dom.iterable", "esnext", "es2017"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "noEmit": true, 9 | "esModuleInterop": true, 10 | "module": "commonjs", 11 | "moduleResolution": "bundler", 12 | "resolveJsonModule": true, 13 | "isolatedModules": true, 14 | "jsx": "preserve", 15 | "incremental": true, 16 | "plugins": [ 17 | { 18 | "name": "next" 19 | } 20 | ], 21 | "paths": { 22 | "@/*": ["./src/*"] 23 | }, 24 | "outDir": "./dist", 25 | "sourceMap": true, 26 | "removeComments": true, 27 | "noImplicitAny": true, 28 | "strictNullChecks": true, 29 | "strictFunctionTypes": true, 30 | "noImplicitThis": true, 31 | "noUnusedLocals": true, 32 | "noUnusedParameters": true, 33 | "noImplicitReturns": true, 34 | "noFallthroughCasesInSwitch": true, 35 | "allowSyntheticDefaultImports": true, 36 | "emitDecoratorMetadata": true, 37 | "experimentalDecorators": true, 38 | "baseUrl": "." 39 | }, 40 | "include": [ 41 | "next-env.d.ts", 42 | "**/*.ts", 43 | "**/*.tsx", 44 | ".next/types/**/*.ts", 45 | "src/**/*" 46 | ], 47 | "exclude": ["node_modules"] 48 | } 49 | --------------------------------------------------------------------------------