- Install dependencies:
npm i
- Environment variables:
cp .env.local.example .env.local
- Run
npm run gen:type
ornpm run gen:watch
- Run
npm run dev
, then go tohttp://localhost:3000/
npm run build && npm run start
- Environment variables:
cp .env.local.example .env
- Set command alias:
source bin/dc-alias
- Build docker image:
dc build
- Run:
dc up
ordc run --service-ports web npm run dev
- then go to
http://localhost:3000/
NOTE: If new packages are added to package.json,
dc up
will usenpm i
to install those packages. But if you are usingdc run --service-ports web npm run dev
, you need to rundc run web npm i
manually to make sure that new packages are installed.
- Set command alias:
source bin/dc-alias
dc run web npm run build
- Set command alias:
source bin/dc-alias
- Build docker image:
dc build
- aws configure, then input your access key and secret
- Login AWS ECR with
$(aws ecr get-login --no-include-email --region ap-southeast-1)
- Push:
docker push 903380195283.dkr.ecr.ap-southeast-1.amazonaws.com/matters-web:latest
docker tag matters-web:latest 903380195283.dkr.ecr.ap-southeast-1.amazonaws.com/matters-web:latest
- Pull:
docker pull 903380195283.dkr.ecr.ap-southeast-1.amazonaws.com/matters-web:latest
docker tag 903380195283.dkr.ecr.ap-southeast-1.amazonaws.com/matters-web:latest matters-web:latest
./public/static/
├── apple-touch-icon.png # favicons
├── favicon-16x16.png
├── icon-96x96.png
├── icons # icons in different sizes
│ ├── 12px
│ │ ├── ...
│ │ └── draft-edit.svg
│ ├── 16px
│ │ ├── ...
│ │ └── world.svg
│ ├── 24px
│ │ ├── ...
│ │ └── wallet.svg
│ ├── 32px
│ │ ├── ...
│ │ └── warning.svg
│ ├── 40px
│ │ ├── ...
│ │ └── share-whatsapp-circle.svg
│ ├── 72px
│ │ ├── ...
│ │ └── empty-warning.svg
│ └── stripe.svg
├── images # illustrations
│ ├── ...
│ └── publish-4.svg
├── manifest.json # configurations
└── opensearch.xml
We use SVGR to transform SVGs into React components. For reusability and bundle optimization:
- If the icon color isn't static:
- Replace the values of
fill
andstroke
attributes withcurrentColor
, and - Add
fill="none"
to<svg>
.
- Replace the values of
- If the icon is resuable, create a component file under
components/Icon
and export it fromcomponents/Icon/index.tsx
.
foldername: PascalCase
filename: camelCase
├── pages
│ └── ArticleDetail
│ ├── styles.css
│ └── index.tsx
└── components
└── Layout
├── styles.css
└── index.tsx
See .vscode/settings.json
See .vscode/extensions.json
For vim users, you might want to see .vim/.vimrc
(using vim-plug).
- If
styled-jsx
is installed in bothnext
and our ownpackage.json
, the built-instyled-jsx
SSR of Next.js will fail. See #533.