This is a starter kit for React.
- SEO-friendly
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
assets/: a directory containing assets for theREADME.mdfileassets/icons/: a directory containing icons for theREADME.mdfileassets/images/: a directory containing images for theREADME.md
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 Stores state manager, which
both works with
AstroandReact. 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.
The project is distributed under the Unlicense license, with the exception of certain assets.
- In the React logo, painted by me, used
the React logo,
from Icon-Icons.com, painted by
Julien Monty and licensed
under the
Free for commerical uselicense.
How do I start contributing to the project?
To learn about contributing to the project, see CONTRIBUTING.md.
Why are some development dependencies necessary?
These dependencies are necessary for other dependencies to work correctly.
| Dependency | Purpose |
|---|---|
| tslib | Dependency for the typescript package |
