🚀
ShipClojure
  • README
  • Development
    • Getting Started
    • REPL Workflow
    • AI Development with ShipClojure
    • Getting Updates
    • Formatting code
    • ShipClojure Guiding Principles
  • Backend
    • Migrations
    • Secrets
    • Routing
    • ShipClojure Blog
    • Email
  • Frontend
    • UIx + re-frame
    • HTTP Requests with Re-frame
    • Frontend Navigation with Re-frame
    • Toast Notifications
    • Icons
  • Server Side Rendering
    • Static/Landing pages
  • Auth
    • How Auth works
    • Oauth2 providers
  • Deployment
    • Deployment
  • Decisions
    • 001 - Cookie Sessions
    • 002 - Single Page Application Architecture
    • 003 - Re-frame instead of Refx
    • 003 - Move from cookie sessions to JWT Access + refresh tokens
Powered by GitBook
On this page
  1. Development

ShipClojure Guiding Principles

Decisions about the ShipClojure should be guided by the following guiding principles:

  • Limit Services: If we can reasonably build, deploy, maintain it ourselves, do it. Additionally, if we can reasonably run it within our app instance, do it. This saves on cost and reduces complexity.

  • Include Only Most Common Use Cases: As a starter kit, it is expected that some code will necessarily be deleted, but implementing support for every possible type of feature is literally impossible. The starter app is not docs, so to demonstrate a feature or give an example, put that in the docs instead of in the starter app.

  • Minimize Setup Friction: Try to keep the amount of time it takes to get an app to production as small as possible. If a service is necessary, see if we can defer signup for that service until its services are actually required. Additionally, while the target audience for this stack is apps that need scale you have to pay for, we try to fit within the free tier of any services used during the exploration phase.

  • Optimize for Adaptability: While we feel great about our opinions, ever-changing product requirements sometimes necessitate swapping trade-offs. So while we try to keep things simple, we want to ensure teams using ShipClojure are able to adapt by switching between third party services to custom-built services and vice-versa.

  • Only one way: Avoid providing more than one way to do the same thing. This applies to both the pre-configured code and the documentation.

  • Offline Development: We want to enable offline development as much as possible. Naturally we need to use third party services for some things (like email), but for those we'll strive to provide a way to mock them out for local development.

PreviousFormatting codeNextMigrations

Last updated 1 month ago