Build your own SaaS business with SaaS boilerplate. Productive stack: React, Material-UI, Next, MobX, WebSockets, Express, Node, Mongoose, MongoDB. Written with TypeScript.
[x] (done in book codebase/content) saas/app: self-hosted fonts: using font from public folder for SSR page, using font from Cloudfront for CSR page (update Chapter 10)
[x] (done in book codebase/content) saas/app icons from @material-ui/icons (update Chapter 10)
[x] (done in book codebase/content) saas/app: hosting font, css files and etc add S3 + Cloudfront (update Chapter 10)
[x] (done in book codebase/content) saas/app: <TableCell>Action</TableCell> (update Chapter 7 and downstream)
[x] (done in book codebase/content) saas/app: remove icon from <a> anchor element (update Chapter 8 and downstream)
[x] (done in book codebase/content) saas/app: move link to nprogress styles from MyDocument to MyApp (update Chapter 2 and downstream)
[x] (done in book codebase/content) saas/app: styles in MyDocument HOC extension; isThemeDark logic in MyApp HOC extension (update Chapter 2 and downstream)
[x] (done in book codebase/content) saas/app: button styles for Confirmer (update Chapter 2 and downstream)
[x] (done in book codebase/content) saas/app: style for LoginButton (update Chapter 2 and Chapter 5, downstream)
[x] (done in book codebase/content) saas/app: retire getTeamListApiMethod and related code; define initialState.team, define team inside MyApp HOC extension
[x] (done in book codebase/content) saas/app: small edits to Layout HOC
[x] (done in book codebase/content) saas/app: /team/ -> /teams; teamRequired is true for YourSettings page;
[x] (done in book codebase/content) saas/api: add missing types, for example createSession inside api/server/stripe.ts (Chapter 10; stripe, s3, mailchimp)
[x] (done in book codebase/content) saas/api and saas/app : server.listen(port, () => instead of server.listen(port, (err) => due to type of listen method
book/* changes: https://github.com/async-labs/saas/commit/d859a19086dc55cd7f3e5b743fd4ed8cb3e24e45
saas/app
andsaas/api
: usenodemon
andts-node
instead ofts-node-dev
(update Chapter 3)saas/app
: useLink
insideMenuWithLinks
(update Chapter 2 and downstream)saas/app
: types forState
https://stackoverflow.com/questions/51465921/react-typescript-constructor-state-vs-property (seeConfirmer
and other components) https://github.com/async-labs/saas/commit/8681666a07a8d30e3e06817d5e5936966356844bbook/* changes: https://github.com/async-labs/saas/commit/354b944d2122bd884ed7367dbb3d2e97323f0ef2
saas/app
: self-hosted fonts: using font frompublic
folder for SSR page, using font from Cloudfront for CSR page (update Chapter 10)saas/app
icons from@material-ui/icons
(update Chapter 10)saas/app
: hosting font, css files and etc add S3 + Cloudfront (update Chapter 10)saas/app
:<TableCell>Action</TableCell>
(update Chapter 7 and downstream)saas/app
: remove icon from<a>
anchor element (update Chapter 8 and downstream)saas/app
: movelink
tonprogress
styles fromMyDocument
toMyApp
(update Chapter 2 and downstream)saas/app
: styles inMyDocument
HOC extension;isThemeDark
logic inMyApp
HOC extension (update Chapter 2 and downstream)saas/app
: button styles forConfirmer
(update Chapter 2 and downstream)saas/app
: style forLoginButton
(update Chapter 2 and Chapter 5, downstream)book/* changes: https://github.com/async-labs/saas/commit/c961374ee8cc1cb945f12b20cca12bd66142b6ba
(update Chapter 10)
saas/app
: upgrademobx
andmobx-react
https://github.com/async-labs/saas/commit/627aa0600e0e70d24498dea7cbd710208f9d7527saas/app
: mobx v6,makeObservable(this, {...})
instead ofdecorate
https://github.com/async-labs/saas/commit/627aa0600e0e70d24498dea7cbd710208f9d7527saas/app
: retiregetTeamListApiMethod
and related code; defineinitialState.team
, defineteam
insideMyApp
HOC extensionsaas/app
: small edits toLayout
HOCsaas/app
:/team/
->/teams
;teamRequired
istrue
forYourSettings
page;book/* changes: https://github.com/async-labs/saas/commit/3be5f67f82407073f6149ee9d9a0ed346d416ee7
(update multiple chapters)
saas/app
: updatedtheme
saas/app
: style edits toTeamSettings
pagesaas/app
: removed styles frombody
, styles insidePostEditor
book/* changes: https://github.com/async-labs/saas/commit/880cc1763ef2a232728722f0164fc3981d324b9e
(multiple chapters if not specified)
saas/api
: add missing types, for examplecreateSession
insideapi/server/stripe.ts
(Chapter 10; stripe, s3, mailchimp)saas/api
:private
/public
usage fortoggleTheme
(runyarn build
to see typescript errors) ( Chapter 4) https://github.com/async-labs/saas/commit/172de891fb2316f7948a65d7bdc34f2a6de5b44dsaas/api
: check types for data models, type[string]
->string[]
,[String]
->[{ type: String }]
saas/api
: mongoose.lean()
to.setOptions({ lean: true })
saas/api
: add AWS_REGION env variable https://github.com/async-labs/saas/commit/172de891fb2316f7948a65d7bdc34f2a6de5b44d (Chapter 4 and downstream)saas/api
andsaas/app
:server.listen(port, () =>
instead ofserver.listen(port, (err) =>
due to type oflisten
method