Tech Stack
This web app was initialized from my open-source Github project called Create Your Stack App
Tech Stack
Tech | Version | Purpose |
---|---|---|
Next | 13.1 | Framework for building React-based web apps |
React | 18.2 | Framework for creating component-based UIs |
tailwindcss | 3.2 | CSS framework |
react-markdown | 8.0 | Used to render blog posts |
gray-matter | 4.0 | Extracts meta-data from markdown files |
reading-time | 1.5 | Estimates the amount of time to read a markdown file |
storybook | 7.0 Beta 15 | Framework from manually testing and documenting React components |
cypress | 12.3 | Enables BDD testing |
@badeball/cypress-cucumber-preprocessor | 15.1 | Enables BDD testing |
jest | 29.3 | Provides framework for unit testing |
eslint | 8.30 | Enforces a coding standard |
prettier | 2.8 | Enforces a coding standard |
husky | 8.0 | Provides git hooks |
Features
-
Web App
- Next JS 13
- App Directory
- SSR
- Next JS 13
-
UI Components
- React
- Atomic UI directory structure
-
CSS
- Tailwind CSS
- Tailwind Typography used for rendering Markdown
-
SEO
- <meta> tags including "og" and "twitter"
- Article Structured Data for blog posts
- Static routes via Next SSR
-
Google Analytics
-
Google Lighthouse Analysis within Chrome Developer Tools:
- .webp images for performance gains
-
Testing
- Cypress for end-to-end BDD testing using Cucumber pre-processor
- Jest and React Testing Library for component and utility testing
- Code Coverage results in /build directory
- Storybook for manual component testing and documentation
-
Pre Commit and Pre Push git hooks
-
Coding Standards
- /app and /src files checked with ESLint and Prettier
-
npm run
scripts- build
- cypress:open
- cypress:run
- dev
- lint
- start
- storybook
- storybook-build
- storybook-build-test
- test
CI / CD Deployment
This web app is hosted on AWS Amplify which pulls the source code from Github. When I make a change in VS Code and push to a private repo in Github, Amplify uses a hook and is notified of the change. Amplify does a build and redeploys the webapp automatically.