Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/xcarpentier/clean-archi-boilerplate

clean-archi-boilerplate
https://github.com/xcarpentier/clean-archi-boilerplate

expo gatsby monorepo react-native-web

Last synced: 3 months ago
JSON representation

clean-archi-boilerplate

Awesome Lists containing this project

README

        

# RN & Expo boilerplate

# Stack

- TypeScript
- redux-saga
- reselect
- tslint
- prettier
- ramda
- Storybook (ie. `yarn start:story`)
- expo

# Install

1. `yarn global add expo-cli` (ie. install expo tooling globally)
1. `yarn` (ie. install dependencies, do it from project root)
1. `yarn start:inmemory` or `yarn start:dev` or `yarn start:story`

## vscode

- [prettier-vscode](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode)

# Git

## Branches

### fixed

- dev (default)
- master (prod)

### not fixed

- feature/`feature name`
- hotfix/`fix name`
- release/`release name or version`

### Best practice

- use rebase to update feature branch from dev:
`git pull origin dev --rebase`

# Clean Architecture

- `__tests__`
- ``
- `unit` on actions and saga
- `configuration` mainly snapshot
- `e2e` detox tests
- `components` snapshot and interactions with enzime
- `src/common`
- `ui/` UI kit
- `src/`
- `ui/` ui, used for navigation and its children component, redux connect, etc.
- `index.js` just export
- `.Smart.ts` redux maps and connect
- `.Dumb.ts` dumb component
- `components/` components used only for this context
- `adapter/` Back-end api and mock (immemory)
- `inmemory/`
- `InMemory.loader.ts` or `InMemory.interactor.ts`
- `real/`
- `dto/`
- `mapper/`
- `.loader.ts` or `.interactor.ts`
- `domain/`
- `entities/`
- `User.ts` entities used in this context, http://facebook.github.io/immutable-js/docs/#/Record.Factory
- `gateways/`
- Interface for `.loader.ts` or `.interactor.ts`
- `usecases`
- `/` store and actions definitions
- `.actions.ts`
- `.reducers.ts`
- `.sagas.ts`
- `.selectors.ts`

# TODO

## 1. Initialize Git Flow
> `git flow init`

## 2. Create A Netlify Website
> [Netlify](https://app.netlify.com)

## 3. Set Environment Variables On CircleCi

> [CircleCI](https://circleci.com/dashboard)
- EXPO_CLI_PASSWORD
- EXPO_USERNAME
- NETLIFY_AUTH_TOKEN
- NETLIFY_SITE_ID