This is a simple starter kit for React.
- Modern UI framework via
Material UI - Mobile-first design
- Security via
Content Security Policy - SEO-friendly via
Astro
Before setting up the website, make sure you have:
Node.js: a runtime environment for running the websitepnpm: a package manager for installing dependencies
Follow these steps to set up the website:
- Clone the repository:
git clone https://github.com/madliani/reactify.git
cd reactify- Install dependencies:
pnpm install- Run tests:
pnpm test- Build the website:
pnpm build.github/: a directory containing files forGitHub.github/workflows/: a directory containing workflow files forGitHub Actions.github/workflows/check-stable.yaml: a workflow file for checking thestablebranch.github/workflows/check-unstable.yaml: a workflow file for checking theunstablebranch
astro/: a directory containing source files of the websiteastro/blocks/: a directory containingAstro-based blocks of the websiteastro/blocks/metadata.astro: a file containing metadata, which makes the website more SEO-friendly
astro/components/: a directory containingAstro-based components of the websiteastro/configurations/: a directory containing configuration files for the websiteastro/configurations/metadata.config.json: a configuration file for themetadatablock
astro/layouts/: a directory containingAstro-based layouts of the websiteastro/pages/: a directory containingAstro-based pages of the websiteastro/styles/: a directory containingCSS-based stylesheets of the websiteastro/styles/global.css: a file containing globalCSS-based stylesheet of the website
astro/templates/: a directory containingAstro-based templates for the pages of the website
public/: a directory containing assets for the websiteassets/icons/: a directory containing icons for the websiteassets/images: a directory containing icons for the website
react/: a directory containingReact-based components of the web appreact/components/: a directory containingReact-based components of the web app
tests/: a directory containing setup files for teststests/setup.ts: a main setup file for tests
types/: a directory containing type declarations for the configuration filestypes/vitest.ts: a file containing type declarations for theVitestconfiguration file
.env: an file, which contains environment variables (local and ignored byGit).browserslistrc: aBrowserslistconfiguration file.gitattributes: aGitattributes file.gitignore: aGitignore file.prettierignore: aPrettierignore file.stylelintcache: a file ofStylelint, which contains the results of processed files, so thatStylelintonly operates on the changed ones (local and ignored byGit).stylelintignore: aStylelintignore fileAUTHORS.txt: anAUTHORSfileCHANGELOG.md: aCHANGELOG.mdfileCONTRIBUTING.md: aCONTRIBUTING.mdfilecspell.config.js: aJavaScript-basedcSpellconfiguration fileeslint.config.js: aJavaScript-basedESLintconfiguration fileindex.html: anindex.htmlfileLICENSE.txt: a license filepackage.json: apackage.jsonfilepnpm-lock.yaml: apnpmlockfilepnpm-workspace.yaml: apnpm-workspace.yamlfileprettier.config.js: aJavaScript-basedPrettierconfiguration fileREADME.md: aREADMEfiletsconfig.app.json: aTypeScriptconfiguration file for the web apptsconfig.json: a baseTypeScriptconfiguration filetsconfig.json: a mainTypeScriptconfiguration filetsconfig.test.json: aTypeScriptconfiguration file for teststsdown.config.js: aJavaScript-basedtsdownconfiguration filetsconfig.tsbuildinfo: a file of theTypeScriptcompiler, which contains incremental compilation information (local and ignored byGit)vercel.json: aJSON-based configuration file forVercelvitest.config.js: aJavaScript-basedVitestconfiguration file
stable: a stable branch for production buildsunstable: an unstable branch for development and testing
Note: If you were expecting to see additional branches here, please see Git Workflow.
This is my personal project that I'm developing alone and for my own purposes.
For that reason, a simplified Git workflow is used here.
The simplified Git workflow contains the following steps:
- Pull from the remote (optional)
- Synchronize the
unstablebranch with thestablebranch - Make a new branch for a new feature, bugfix, or hotfix from the
unstablebranch - Push branch to the remote
- Implement the feature, bugfix, or hotfix within the branch
- Test the feature, bugfix, or hotfix within the branch
- Synchronize the
unstablebranch with thestablebranch (optional) - Synchronize the branch with the
unstablebranch (optional) - Retest the feature, bugfix, or hotfix within the branch (optional)
- Merge the branch into the
unstablebranch - Merge the
unstablebranch into thestablebranch - Make a release within the
stablebranch - Delete the branch
- Push changes to the remote
Note: The optional steps are needed if you are developing a few features, bugfixes, or hotfixes at the same time.
- The project is a
React-based single-page application (SPA), but it usesAstroas a bundler, a router, and an alternative forReact Helmet. So, formally, the project is anAstro-based website. - For compatibility reasons, the project uses
Nano Storesstate manager, which both works withAstroandReact. It allows you to share the state of the web app between theAstro-based andReact-based components, and also it's officially recommended byAstrodevelopers. - The size of the image for
The Open Graph protocolshould be1200x630pixels.
To learn about contributing to the project, see CONTRIBUTING.md.
The project is distributed under the Unlicense license, with the exception of certain assets.
The project uses the following assets:
- Reactify logo:
{ "name": "React logo", "url": "https://icon-icons.com/icon/react-original-logo/146374", "license": "Free for commerical use", "author": { "name": "Julien Monty", "url": "https://icon-icons.com/authors/934-julien-monty/" }, "from": { "name": "Icon-Icons.com", "url": "https://icon-icons.com/" } }
These dependencies are necessary for other dependencies to work correctly.
| Dependency | Purpose |
|---|---|
| tslib | Dependency for the typescript package |
