Skip to content

Instantly share code, notes, and snippets.

@alexkilgour
Last active June 21, 2019 08:48
Show Gist options
  • Save alexkilgour/d12a2a3fa1950bf1b23ebf8987d0c6f2 to your computer and use it in GitHub Desktop.
Save alexkilgour/d12a2a3fa1950bf1b23ebf8987d0c6f2 to your computer and use it in GitHub Desktop.
Oscar frontend folder structure

Proposed structure for Oscar frontend

Current: oscar-sites-bmc

https://github.com/springernature/oscar/wiki/working-with-css

oscar-sites-bmc
└── src
    └── main
        └── web
            ├── app-bmc
            │   ├── 𝘢𝘱𝘱 𝘴𝘱𝘦𝘤𝘪𝘧𝘪𝘤 𝘵𝘰𝘰𝘭𝘬𝘪𝘵-𝘴𝘵𝘺𝘭𝘦 𝘤𝘰𝘮𝘱𝘰𝘯𝘦𝘯𝘵𝘴
            │   ├── core.scss
            │   ├── app.scss
            │   └── print.scsss
            ├── app-springercom
            │   ├── 𝘢𝘱𝘱 𝘴𝘱𝘦𝘤𝘪𝘧𝘪𝘤 𝘵𝘰𝘰𝘭𝘬𝘪𝘵-𝘴𝘵𝘺𝘭𝘦 𝘤𝘰𝘮𝘱𝘰𝘯𝘦𝘯𝘵𝘴
            │   ├── core.scss
            │   ├── app.scss
            │   └── print.scsss
            ├── app-springeropen
            │   ├── 𝘢𝘱𝘱 𝘴𝘱𝘦𝘤𝘪𝘧𝘪𝘤 𝘵𝘰𝘰𝘭𝘬𝘪𝘵-𝘴𝘵𝘺𝘭𝘦 𝘤𝘰𝘮𝘱𝘰𝘯𝘦𝘯𝘵𝘴
            │   ├── core.scss
            │   ├── app.scss
            │   └── print.scsss
            ├── cms
            ├── frontend-springer-toolkit
            │   └── 𝘴𝘩𝘢𝘳𝘦𝘥 𝘵𝘰𝘰𝘭𝘬𝘪𝘵-𝘴𝘵𝘺𝘭𝘦 𝘤𝘰𝘮𝘱𝘰𝘯𝘦𝘯𝘵𝘴
            ├── images
            ├── preview
            ├── shared
            │   └── 𝘖𝘭𝘥𝘦𝘳 𝘉𝘌𝘔-𝘴𝘵𝘺𝘭𝘦 𝘤𝘰𝘮𝘱𝘰𝘯𝘦𝘯𝘵𝘴
            └── to-deprecate
                └── 𝘓𝘦𝘨𝘢𝘤𝘺 𝘤𝘰𝘥𝘦 𝘵𝘰 𝘣𝘦 𝘳𝘦𝘱𝘭𝘢𝘤𝘦𝘥 𝘰𝘳 𝘳𝘦𝘮𝘰𝘷𝘦𝘥

Proposed: oscar-sites-bmc

Changes:

  • use the core.scss and enhanced.scss naming convention used in components
  • rename to-deprecate to legacy
  • add packages subfolder to each app to replicate toolkits, and allow change to oscar-sites-nature
  • addition of a legacy folder within each app if it is needed for non-toolkit code
oscar-sites-bmc
└── src
    └── main
        └── web
            ├── app-bmc
            │   ├── legacy
            │   │   └── 𝘭𝘦𝘨𝘢𝘤𝘺-𝘴𝘵𝘺𝘭𝘦 𝘴𝘤𝘴𝘴 𝘢𝘯𝘥 𝘫𝘴
            │   ├── packages
            │   │   └── 𝘢𝘱𝘱 𝘴𝘱𝘦𝘤𝘪𝘧𝘪𝘤 𝘵𝘰𝘰𝘭𝘬𝘪𝘵-𝘴𝘵𝘺𝘭𝘦 𝘤𝘰𝘮𝘱𝘰𝘯𝘦𝘯𝘵𝘴
            │   ├── core.scss
            │   ├── enhanced.scss
            │   └── print.scsss
            ├── app-springercom
            │   ├── legacy
            │   │   └── 𝘭𝘦𝘨𝘢𝘤𝘺-𝘴𝘵𝘺𝘭𝘦 𝘴𝘤𝘴𝘴 𝘢𝘯𝘥 𝘫𝘴
            │   ├── packages
            │   │   └── 𝘢𝘱𝘱 𝘴𝘱𝘦𝘤𝘪𝘧𝘪𝘤 𝘵𝘰𝘰𝘭𝘬𝘪𝘵-𝘴𝘵𝘺𝘭𝘦 𝘤𝘰𝘮𝘱𝘰𝘯𝘦𝘯𝘵𝘴
            │   ├── core.scss
            │   ├── enhanced.scss
            │   └── print.scsss
            ├── app-springeropen
            │   ├── legacy
            │   │   └── 𝘭𝘦𝘨𝘢𝘤𝘺-𝘴𝘵𝘺𝘭𝘦 𝘴𝘤𝘴𝘴 𝘢𝘯𝘥 𝘫𝘴
            │   ├── packages
            │   │   └── 𝘢𝘱𝘱 𝘴𝘱𝘦𝘤𝘪𝘧𝘪𝘤 𝘵𝘰𝘰𝘭𝘬𝘪𝘵-𝘴𝘵𝘺𝘭𝘦 𝘤𝘰𝘮𝘱𝘰𝘯𝘦𝘯𝘵𝘴
            │   ├── core.scss
            │   ├── enhanced.scss
            │   └── print.scss
            ├── cms
            ├── frontend-springer-toolkit
            ├── images
            ├── preview
            ├── shared
            └── legacy

Current: oscar-sites-nature

oscar-sites-nature
└── oscar-mosaic
    ├── css
    │   ├── journal
    │   │   └── 𝘭𝘦𝘨𝘢𝘤𝘺-𝘴𝘵𝘺𝘭𝘦 𝘴𝘤𝘴𝘴 𝘧𝘰𝘳 𝘫𝘰𝘶𝘳𝘯𝘢𝘭𝘴
    │   ├── magazine
    │   │   └── 𝘭𝘦𝘨𝘢𝘤𝘺-𝘴𝘵𝘺𝘭𝘦 𝘴𝘤𝘴𝘴 𝘧𝘰𝘳 𝘮𝘢𝘨𝘢𝘻𝘪𝘯𝘦
    │   ├── search
    │   │   └── 𝘭𝘦𝘨𝘢𝘤𝘺-𝘴𝘵𝘺𝘭𝘦 𝘴𝘤𝘴𝘴 𝘧𝘰𝘳 𝘴𝘦𝘢𝘳𝘤𝘩
    │   ├── article-print.scss
    │   ├── article.scss
    │   ├── grade-c.scss
    │   ├── journal-mosaic.scss
    │   ├── magazine-mosaic.scss
    │   ├── mosaic-grade-c.scss
    │   ├── nature-open-access.scss
    │   └── recommended.css
    ├── img
    ├── js
    │   └── 𝘭𝘦𝘨𝘢𝘤𝘺-𝘴𝘵𝘺𝘭𝘦 𝘫𝘢𝘷𝘢𝘴𝘤𝘳𝘪𝘱𝘵
    ├── nature-open-access
    │   └── 𝘤𝘰𝘮𝘱𝘰𝘯𝘦𝘯𝘵𝘴 𝘧𝘰𝘳 𝘯𝘢𝘵𝘶𝘳𝘦 𝘰𝘱𝘦𝘯 𝘢𝘤𝘤𝘦𝘴𝘴
    ├── nature-toolkit
    │   └── 𝘭𝘦𝘨𝘢𝘤𝘺-𝘴𝘵𝘺𝘭𝘦 𝘤𝘰𝘮𝘱𝘰𝘯𝘦𝘯𝘵𝘴 - 𝘴𝘤𝘴𝘴 𝘢𝘯𝘥 𝘫𝘴
    └── pwa-manifest

Proposed: oscar-sites-nature

Changes:

  • rename oscar-mosaic to web
  • create new folder legacy
  • move nature-toolkit to legacy > components
  • move js to legacy > js
  • move nature-open-access contents to app-open-access > packages
  • create frontend-nature-toolkit for shared brand packages
  • remove recommended.css, not needed anymore?
  • remove article.scss, article-print.scss, grade-c.scss entrypoints
    • create article specific entrypoints in app-journal (see below)
  • remove journal-mosaic.scss, magazine-mosaic.scss, nature-open-access.scss, mosaic-grade-c.scss
    • create app specific endpoints for core, enhanced, and print.scss
oscar-sites-nature
└── web
    ├── app-journal
    │   ├── legacy
    │   │   └── 𝘭𝘦𝘨𝘢𝘤𝘺-𝘴𝘵𝘺𝘭𝘦 𝘴𝘤𝘴𝘴 𝘧𝘰𝘳 𝘫𝘰𝘶𝘳𝘯𝘢𝘭𝘴
    │   ├── packages
    │   │   └── 𝘢𝘱𝘱 𝘴𝘱𝘦𝘤𝘪𝘧𝘪𝘤 𝘵𝘰𝘰𝘭𝘬𝘪𝘵-𝘴𝘵𝘺𝘭𝘦 𝘤𝘰𝘮𝘱𝘰𝘯𝘦𝘯𝘵 𝘱𝘢𝘤𝘬𝘢𝘨𝘦𝘴
    │   ├── core.scss
    │   ├── enhanced.scss
    │   └── print.scsss
    ├── app-magazine
    │   ├── legacy
    │   │   └── 𝘭𝘦𝘨𝘢𝘤𝘺-𝘴𝘵𝘺𝘭𝘦 𝘴𝘤𝘴𝘴 𝘧𝘰𝘳 𝘮𝘢𝘨𝘢𝘻𝘪𝘯𝘦
    │   ├── packages
    │   │   └── 𝘢𝘱𝘱 𝘴𝘱𝘦𝘤𝘪𝘧𝘪𝘤 𝘵𝘰𝘰𝘭𝘬𝘪𝘵-𝘴𝘵𝘺𝘭𝘦 𝘤𝘰𝘮𝘱𝘰𝘯𝘦𝘯𝘵 𝘱𝘢𝘤𝘬𝘢𝘨𝘦𝘴
    │   ├── core.scss
    │   ├── enhanced.scss
    │   └── print.scsss
    ├── app-search
    │   ├── legacy
    │   │   └── 𝘭𝘦𝘨𝘢𝘤𝘺-𝘴𝘵𝘺𝘭𝘦 𝘴𝘤𝘴𝘴 𝘧𝘰𝘳 𝘴𝘦𝘢𝘳𝘤𝘩
    │   ├── packages
    │   │   └── 𝘢𝘱𝘱 𝘴𝘱𝘦𝘤𝘪𝘧𝘪𝘤 𝘵𝘰𝘰𝘭𝘬𝘪𝘵-𝘴𝘵𝘺𝘭𝘦 𝘤𝘰𝘮𝘱𝘰𝘯𝘦𝘯𝘵 𝘱𝘢𝘤𝘬𝘢𝘨𝘦𝘴
    │   ├── core.scss
    │   ├── enhanced.scss
    │   └── print.scsss
    ├── app-open-access
    │   ├── legacy
    │   │   └── 𝘭𝘦𝘨𝘢𝘤𝘺-𝘴𝘵𝘺𝘭𝘦 𝘴𝘤𝘴𝘴 𝘧𝘰𝘳 𝘰𝘱𝘦𝘯 𝘢𝘤𝘤𝘦𝘴𝘴
    │   ├── packages
    │   │   └── 𝘢𝘱𝘱 𝘴𝘱𝘦𝘤𝘪𝘧𝘪𝘤 𝘵𝘰𝘰𝘭𝘬𝘪𝘵-𝘴𝘵𝘺𝘭𝘦 𝘤𝘰𝘮𝘱𝘰𝘯𝘦𝘯𝘵 𝘱𝘢𝘤𝘬𝘢𝘨𝘦𝘴
    │   ├── core.scss
    │   ├── enhanced.scss
    │   └── print.scsss
    ├── legacy
    │   ├── js
    │   │   └── 𝘭𝘦𝘨𝘢𝘤𝘺-𝘴𝘵𝘺𝘭𝘦 𝘫𝘢𝘷𝘢𝘴𝘤𝘳𝘪𝘱𝘵
    │   └── components
    │       └── 𝘭𝘦𝘨𝘢𝘤𝘺-𝘴𝘵𝘺𝘭𝘦 𝘤𝘰𝘮𝘱𝘰𝘯𝘦𝘯𝘵𝘴 - 𝘴𝘤𝘴𝘴 𝘢𝘯𝘥 𝘫𝘴
    ├── frontend-nature-toolkit
    │   └── 𝘴𝘩𝘢𝘳𝘦𝘥 𝘵𝘰𝘰𝘭𝘬𝘪𝘵-𝘴𝘵𝘺𝘭𝘦 𝘤𝘰𝘮𝘱𝘰𝘯𝘦𝘯𝘵𝘴
    ├── img
    └── pwa-manifest

Multiple entrypoints

If your app requires multiple entrypoints, for example the article app-journal in oscar-sites-nature, then create your main application entrypoints:

  • core.scss
  • enhanced.scss
  • print.scss

then app specific entrypoints in the same location:

  • core-article.scss
  • enhanced-article.scss
  • print-article.scss
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment