Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rhiokim/large-scale-frontend
(WIP ๐ฅ) ๋ณต์กํ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ์ํ ์๊ฐ
https://github.com/rhiokim/large-scale-frontend
Last synced: about 2 months ago
JSON representation
(WIP ๐ฅ) ๋ณต์กํ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํ ์๊ฐ
- Host: GitHub
- URL: https://github.com/rhiokim/large-scale-frontend
- Owner: rhiokim
- Created: 2018-07-04T05:03:14.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2019-11-16T02:31:03.000Z (about 5 years ago)
- Last Synced: 2024-08-03T01:28:56.837Z (5 months ago)
- Homepage:
- Size: 16.9 MB
- Stars: 38
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-list - large-scale-frontend
README
```
Development
\_ Manage source code and local dev automation
\_ Focus on code without additional work
```## Purpose
Save your life with large scale frontend architecture
## Guide
Base -> Development -> Build -> Test -> Maintain -> Refactor
-> Workflow
-> SCM
-> Co-Working
-> Code Quality
-> Continuous Integration
-> Continuous Delivery
-> Versioning
-> Documentation### Workflow
#### Git
* Commit Message Convention
* Side Effects
* Easy to make release notes & Change logs
* Good Convention Guidelines
* ๐ [Angular Team Guidelines](https://github.com/angular/angular/blob/master/CONTRIBUTING.md#commit)
> This guide is quite awesome when you wirte any kind of open source libraries
* ๐ [Erlang - Writing good commit message](https://github.com/erlang/otp/wiki/Writing-good-commit-messages)
> And this is also good option
* Tool to save your life
* [Commitizen](https://github.com/commitizen/cz-cli)#### Hooking
* Side Effects
* Reduce human error immediatly when you work with git every time. In other words, you don't need to care of it at all
* NPM
* [npm-scripts](https://docs.npmjs.com/misc/scripts)
* Git
* [description] https://github.com/typicode/husky
* [description] https://github.com/marionebl/commitlint
* [description] https://github.com/okonet/lint-staged#### Code Quality
* Typing
* Lint#### CI(Continuous Integration)
* Google Cloud Build
* Gitlab Pipeline
* [AWS CodeBuild](https://aws.amazon.com/ko/codebuild/)
* Travis
* Circle CI#### CD(Continuous Delivery)
* Cloud
* AWS
* Now.sh
* Digital Ocean
* Heroku
* Static Web Publishing
* Netlify
* Surge
* Github gh-pages#### Versioning
* Side Effects
* Tools
* NPM
* Yarn
* np
* semver
* https://semver.org/
* https://docs.npmjs.com/misc/semver#### Documentation
* Manaual
* Gitbook
* Flybook
* README.md
* https://github.com/jfmengels/all-contributors-cli
* CHANGELOG.md
* LICENSE.md
* Comments### Application Architecture
* ์ฝ๋๋ฒ ์ด์ค
* Monorepo
* What?
* Why?
* When?
* How?
* ๋ถ์ฐ/MSA
* ๊ณตํต ๋ชจ๋๋ผ์ด์ง
* Universal Rendering
* Next.js
* Nuxt.js
* Others?
* Serverless
* zeit/now
* ํ๊ฒฝ
* ๋ชจ๋ฐ์ผ
* Native Interfaces with Web Application
* ๋ฐ์คํฌํ
* ๊ทธ์ธ
* ๋๋ฒ๊น#### WACQA(Web Application Consideration Tree)
> WACQA is just LGTM
* Client-side
* Framework - How much time we can spend for that?
* How to manages dependencies?
* How to migrate version issue?
* Learning costs
* Pros & Cons for our goals
* Tooling costs
* Responseive
* Browser
* Mobile
* TV
* PWA
* Service Worker
* Web Push
* SEO
* Will we happy with SEO?
* Universal Rendering - SSR
* Really need this to archive our goal?
* Static Typing
* Can you answer me why we are need this thing on our project?
* i18n - Internationalization
* a11y - Web Accessibility
* Testing - unit(snapshot), e2e and others?
* Browers Capability
* CSS - Pre-processor (SASS/Less/Stylus) and JSS
* Backend-side
* coming up### Modern Framwork
* Web Component
* Router
* React.js
* Vue.js### Style
* CSS
* css
* inline style
* CSSModules
* styled-component### State Management
๊ณผ๊ฑฐ MVC ํจํด์ด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌํ์ ๋๋ถ๋ถ์ด์๋ ์์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๊ด๋ฆฌ๋ ๊ฐ Model ๊ณผ Controller ์ ์ํด์ ๊ด๋ฆฌ๋์ด์ก๋ค. ๋ฌผ๋ก ๊ทธ๋ ๋น์์ ์ํ๊ด๋ฆฌ๋ ๊ทธ๋ ๊ฒ ๋ณต์กํ์ง ์์๋ค. ์๋ ๊ทธ๋ ๊ฒ ๋ณต์กํ ์ํ๋ฅผ ๊ด๋ฆฌํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌํํ์ง ์์๋ค.
ํ์ง๋ง ๋ชจ๋ ์น ๋ธ๋ผ์ฐ์ ์ ๊ธฐ์ ์ ๊ธ์๋๋ก ๋ฐ์ ํ๊ณ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์กฐ๋ ๊ธ์๋๋ก ๋ณํํ์๋ค.
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌํ ํจํด๋ MVC ์์ 2013๋ ์ ๊ธฐ์ ์ผ๋ก ๋งํฌ์ , ์คํ์ผ์ํธ๋ฅผ ๋จ์ผ ํ์ผ์ ๋ด์ ์น ์ปดํฌ๋ํธ์ ํํ๋ก ๋ณํํ๋ฉด์ ์ํ๊ด๋ฆฌ์ ๋ณต์กํจ์ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ(Uni-direction Data Flow)์ผ๋ก ๊ทธ ํจ๋ฌ๋ค์์ ๋ฐ์ ์์ผ์ค๊ณ ์๋ค.
๋๋ถ์ด ๋ค์ํ ์ธ์ด์ ํ๊ฒฝ์ ๊ฒฝํ๋ค์ด ์น ์ํ๋จธ์ ์ ํจ๋ฌ๋ค์์ ์ํฅ์ ์ฃผ๊ณ ์๋ค.
* Flux
* Uni-Direction Data Flow
* Redux
* React
* [Context Provider](https://reactjs.org/docs/context.html)
* [Hooks](https://reactjs.org/docs/hooks-intro.html)
* Vuex
* Action
* Getter
* Mutation
* Module
* Computed
* Saga
* [What is saga?](https://engineering.universe.com/what-is-redux-saga-c1252fc2f4d1)
* GraphQL
* Observable
* Rx
* MobX
* TFRP(transparently applying functional reactive programming)---
* We **have to** understand about general state machine - https://en.wikipedia.org/wiki/Finite-state_machine
### Testing
[Wikipedia](https://en.wikipedia.org/wiki/Software_testing##Testing_levels)
๋ชจ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํ ํ๊ฒฝ์ ๊ณผ๊ฑฐ์ ๋นํด ์๋ฑํ ์ข์์ง๊ณ ์์ผ๋ฉฐ ๋ฌ๋์ปค๋ธ๊ฐ ๋ฎ์์ง๊ณ ์๋ค.
2013๋ ์ด๋ถํฐ ์น ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ๊ฐ๋ฐ ํ๊ฒฝ์ด ๋ฐํ์ด ๋๋ฉด์ ์ต๊ทผ 2015๋ ๋ถํฐ๋ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ฒด๊ณ๊ฐ ๊ฐ์ถฐ์ง ํ ์คํธ๋ฅผ ์ ์งํ ์ ์๊ฒ ๋์๋ค. ํ ์คํธ์ ๋ฐฉ์๊ณผ ํ ์คํธ ๋ ๋ฒจ์ ์ค์๋๊ฐ ๋ฌ๋ผ์ง๊ณ ์๋ค.
ํฐ ์ฌ์ด์ฆ์ ํ์ฅ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์งํ๊ธฐ ์ํด์ ์๋์ ์ ์ํ ๋ช๊ฐ์ง ํ ์คํธ ํ๊ฒฝ ๊ตฌ์ถ๊ณผ ํ ์คํ ์ ๋ต์ ๋ํด์ ์ถฉ๋ถํ ์ดํดํ๋ฉด ์ข๋ค.
* Unit(์ค๋ ์ท)
* Jest
* Mocha
* E2E
* [Nightwatch.js](http://nightwatchjs.org/)
* [Cypress.io](https://www.cypress.io/)
* [Jest with Puppeteer](https://github.com/smooth-code/jest-puppeteer)### User Analysis
* ์ฌ์ฉ์ ๋ถ์ ์ ๋ต
* ํผ๋(funnel) ๋์์ธ ๋ฐฉ๋ฒ### Logging & Auditing
* for Debug
* for Tracing
* Node.js
* Morgan
* Web Application
* Sentry - [sentry.io](https://sentry.io)
* Mobile### Security
๋๋ถ๋ถ์ ๋ณด์์ ํ๋ก ํธ์๋ ์ฆ ๋ธ๋ผ์ฐ์ ์์ญ์์ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๋ ๊ทธ๋ค์ง ์ค์๋๊ณ ๋์ง ์๊ฒ ๋๋๋ค.
๊ณผ๊ฑฐ๋ ํ์ฌ๋, ์ด ์น์ ์์๋ ๋ณด์์ ์ค์์ฑ, ํ์์ฑ์ ๋ํ ์ ๋ณด๋ณด๋ค ๋ณด์ ์ทจ์ฝ์ ์ด ๋ฐ์ํ ์ ์๋
๋ค์ํ ์ํ ์์๋ฅผ ์ธ์ํ๊ณ ์๋ฐฉํ ์ ์๋ ๋ฐฉ๋ฒ๋ค์ ๋ํด ํฌ๊ฒ 2๊ฐ์ง ์์ญ Node.js, Browser ๋ค๋ฃจ๋ ๊ฒ์ ๋ชฉ์ ์ผ๋ก ํ๋ค.Node.js ์ ๊ฒฝ์ฐ ์๋ฒ ํ๋ก๊ทธ๋๋ฐ์ ๋์ด์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ์ํฅ์ ์ฃผ๊ณ ์๋ค.
๋๋ถ์ด ์์คํ ์ ์ ์ฝ์์ด ์์ธ์ค ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋จ์ํ ์น ๋ณด์์ ๋์ด์ ์์คํ ๋ณด์์ ์ทจ์ฝ์ ๊น์ง
๋ฐ์ํ ์ ์๋ค.#### Node.js
* 10 npm Security Best practices - https://snyk.io/blog/ten-npm-security-best-practices/
* npm audit - https://docs.npmjs.com/cli/audit
* nsp - https://www.npmjs.com/package/nsp#### Browser
Google Web Fundmental - https://developers.google.com/web/fundamentals/security?hl=ko
* Content Security Policy - https://developers.google.com/web/fundamentals/security/csp?hl=ko### Performance
* This! Good start point - https://www.smashingmagazine.com/2019/01/front-end-performance-checklist-2019-pdf-pages/
* PWA
* SEO
* Bundling
* Code Splitting
* Tree Shaking
* Minify
* NginX Configuration
* This can help your server improve the SPA(Single Page Application) and web site's performance and security, while also ensuring that resources are served with the correct content-type and are accessible, if needed, even cross-domain.
* [Configuration your web server to prevent caching](https://github.com/vuejs-templates/pwa/blob/development/docs/prevent_caching.md)
* [Caching best practices & max-age gotchas](https://jakearchibald.com/2016/caching-best-practices/)
* [HTML5 Boilerplate Nginx Configuration](https://github.com/h5bp/server-configs-nginx)
* Tools
* Lighthouse - https://developers.google.com/web/tools/lighthouse/?hl=ko
> Lighthouse ๋ ์น ์ฑ์ ํ์ง ๊ฐ์ ์ ์ํ ์คํ์์ค ์๋ํ ๋๊ตฌ### Optimization
* Assets
* Image
* CSS### The Design of Principles
* Design Ops
* Definition
* token
* element
* component
* pattern
* template#### Design System
* https://designsystemsrepo.com/design-systems/
#### Component Design
* Layout
* Grid
* Motion & Animation
* Colors
* Pattern
* HEX
* RGBA
* HSLA
* Sizing#### CSS
* Structured CSS
* Preprocessor
* CSS in JS## Strategies & Methodologies
### Modularization
In every developer's life. We are considerating every day how to write high reusable code.
We **have to** understand about Separation of concerns (aka SoC) - https://en.wikipedia.org/wiki/Separation_of_concerns
* Common Regular Expression
* Name
* Phone
* Number Format
* Time
* Date
* Zip Code### DDD
### Etc
* Mobile Native Interfaces
* .well-known - https://www.mnot.net/blog/2010/04/07/well-known## Diagram
## Contribute
## LICENSE