---
# System prepended metadata

title: waricoma's TypeScript project templete

---

# waricoma's TypeScript project templete

It's for the generic template for projects I often take.

+ [https://expressjs.com/](https://expressjs.com/)
+ [https://www.electronjs.org/](https://www.electronjs.org/)
+ [https://api.slack.com/tools/bolt](https://api.slack.com/tools/bolt)
+ [https://github.com/line/line-bot-sdk-nodejs](https://github.com/line/line-bot-sdk-nodejs)
+ [https://crisboarna.github.io/fb-messenger-bot-api/](https://crisboarna.github.io/fb-messenger-bot-api/)

```mermaid
classDiagram
  class ElectronApp {
    /src/electron/index.ts
    -BrowserWindow mainWindow
    -App app
    -string mainURL
    -void constructor(app: App)
    -void onWindowAllClosed()
    -void create()
    -void onActivated()
    -void setUpMenu()
    -void restoreWinState()
    +void updateMainURL(mainURL: string)
    +void loadMainURL()
  }
  
  class SlackBoltApp {
    from "@slack/bolt"
  }
  
  class LineBotSdk {
    from "@line/bot-sdk"
  }
  
  class FbMessengerBotApi {
    from "fb-messenger-bot-api"
  }

  class ExpressApp {
    /src/express/app.ts ( It's imported by /src/express/index.ts )
    -express.Application app
    -void constructor(app: express.Application)
    -void plugins
    -void views
    -void controllers
    +App slackBolt(token: string, signingSecret: string)
    +Client lineSdk(channelAccessToken: string, channelSecret: string)
    +FacebookMessagingAPIClient fbMsg(pageAccessToken: string)
    +listen(port: number, host: string, cb)
  }
  
  class Router {
    /src/express/_controller/_router/index.ts
  }
  
  class WebRouter {
    /src/express/_controller/_router/_web/index.ts
  }
  
  class SlackRouter {
    /src/express/_controller/_router/_slack/index.ts
  }
  
  class LineRouter {
    /src/express/_controller/_router/_line/index.ts
  }
  
  class FbRouter {
    /src/express/_controller/_router/_fb/index.ts
  }

  class Controller {
    /src/express/_controller/index.ts
  }
  
  class WebController {
    /src/express/_controller/_web/index.ts
  }
  
  class SlackController {
    /src/express/_controller/_slack/index.ts
  }
  
  class LineController {
    /src/express/_controller/_line/index.ts
  }
  
  class FbController {
    /src/express/_controller/_fb/index.ts
  }
  
  class Model {
    /src/express/_model/index.ts
  }
  
  class View {
    /src/express/_views/index.ts
  }
  
  class SampleWebController {
    /src/express/_controller/_web/Sample.ts
  }
  
  class SampleSlackController {
    /src/express/_controller/_slack/Sample.ts
  }
  
  class SampleLineController {
    /src/express/_controller/_line/Sample.ts
  }
  
  class SampleFbController {
    /src/express/_controller/_fb/Sample.ts
  }
  
  class SampleModel {
    /src/express/_model/Sample.ts
  }

  ElectronApp <|-- ExpressApp : imported
  ExpressApp <|-- SlackBoltApp : imported
  ExpressApp <|-- LineBotSdk : imported
  ExpressApp <|-- FbMessengerBotApi : imported
  SampleModel <|-- Model : imported
  WebRouter <|-- Router : imported
  SlackRouter <|-- Router : imported
  LineRouter <|-- Router : imported
  FbRouter <|-- Router : imported
  WebController <|-- Controller : imported
  SlackController <|-- Controller : imported
  LineController <|-- Controller : imported
  FbController <|-- Controller : imported
  WebController <|-- View : imported
  WebRouter <|-- SampleWebController : imported
  SlackRouter <|-- SampleSlackController : imported
  LineRouter <|-- SampleLineController : imported
  FbRouter <|-- SampleFbController : imported
  SampleWebController <|-- WebController : imported
  SampleSlackController <|-- SlackController : imported
  SampleLineController <|-- LineController : imported
  SampleFbController <|-- FbController : imported
  SampleWebController <|-- SampleModel : imported
  SampleSlackController <|-- SampleModel : imported
  SampleLineController <|-- SampleModel : imported
  SampleFbController <|-- SampleModel : imported
  ExpressApp <|-- WebRouter : imported
  ExpressApp <|-- SlackRouter : imported
  ExpressApp <|-- LineRouter : imported
  ExpressApp <|-- FbRouter : imported
```