DEPRECATED - THIS GENERATOR IS NO LONGER SUPPORTED, I HAVE MOVED THE DEVELOPMENT TO A NEW GENERATOR CALLED generator-noura that supports GraphQL and Helm chart
Yeoman generator for building RESTful APIs and microservices using Node.js, ExpressJS and Docker support, and fullstack service with ReactJS, Redux, and Redux Observable. Astro Generator was designed to be scalable on containerized environment like Kubernetes, and designed to be enterprise ready. The principle of the project structure is isolation, so multiple developers can work on the same project without high dependency.
- ExpressJS project, with vanilla javascript, this is suitable for creating service only project.
- ReactJS Fullstack Project, this is for creating web app using Server Side Rendering.
- Transpiler with Babel 6
- Rendering with reactjs
- Component Styling with styled-components
- State management with Redux
- Redux Middleware with redux-observable
- Reactive Programming for redux-observable with rxjs
- Routing with react-router
- Redux Routing with react-router-redux
- Server side Routing with react-router-dom
- Module bundling with HMR using webpack
- React DOM Testing with react-testing-library
- Optional React Testing with enzyme
- No transpilers, just vanilla javascript
- ES2017 latest features like Async/Await
- CORS enabled
- Uses yarn
- Express
- Consistent coding styles with editorconfig
- Docker support
- Uses helmet to set some HTTP headers for security
- Load environment variables from .env files with dotenv
- Request validation with joi
- Gzip compression with compression
- Linting with eslint with eslint-config-astro
- Tests with jest along with coverage
- Git hooks with husky
- Logging with winston, and winston-cloudwatch for production log stream
- API documentation geratorion with apidoc
- Monitoring with pm2
- Startup boot tasks that can be used for data migrations or pre startup task runner.
- ORM using Sequelize (optional) sequelize with docker-compose migrations
- HTTP using axios with retry axios
- Node v7.6+ or Docker
- Yarn
Install:
npm install -g yo generator-astro
Generate a new project:
yo astro
Choose your project, either service or fullstack
Generate a new component
yo astro:component
Upon creation on a component, a new component folder will be created on src/components
, and entries will be injected on the following files:
src/client/ducks/routers.js
src/client/ducks/epics.js
src/client/ducks/reducers.js
Generate a new API:
yo astro:api
Generate a new middleware:
yo astro:middleware
Generate a new service:
yo astro:service
Generate a new utility:
yo astro:util
Generate a new boot task:
yo astro:boot
Set environment variables:
cp .env.example .env
yarn dev
yarn start
# lint code with ESLint
yarn lint
# try to fix ESLint errors
yarn lint:fix
# lint and watch for changes
yarn lint:watch
yarn db:migrate
# to undo the migration
yarn db:migrate:undo
# run all tests with Jest with coverage
yarn test
# run unit tests
yarn test:unit
# run integration tests
yarn test:integration
# run all tests and watch for changes
yarn test:watch
# run lint and tests
yarn validate
# show logs in production
pm2 logs
# generate and open api documentation
yarn docs
# run container locally
yarn docker:dev
or
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up
# run container in production
yarn docker:prod
or
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up
# run tests
yarn docker:test
or
docker-compose -f docker-compose.yml -f docker-compose.test.yml up