architecture
Architecture scaling and lifecycle
Validate ideas first with mocks and ads to gauge interest and gather data
Refine idea with first few hardcore fans to iterate on
Exploration: Initial simple, lovable, complete product
Use tools that are easy and familiar to validate early ideas
(But consider long-term consequences of not using simple ones)
Examine data model for relationships
Traditional RDBMS if relational data, where referential integrity is important
PostgreSQL
Heroku integration
Free, open-source
Good optimizations
Battle-tested reliability, community, performance
NoSQL when horizontal scaling is paramount and eventual consistency is sufficient
Graph databases for graph-like data
Mono-repo monolith
Minimal cognitive load for new, smaller codebase
Established fully-featured framework (e.g., Luminus, Next.js, Ruby on Rails, Django, etc.)
Quick setup
Conventions over configuration
Minimal bikeshedding, analysis paralysis
Community of libraries/add-ons
12factor principles
Server-side rendering
Integrated data binding
Migration generation
Documented schema
Bulma CSS to Bootstrap basics
PaaS infrastructure to minimize reliability issues and management (e.g., Heroku)
Use other services to ramp up quickly
E.g., Auth0
Test business value feedback loop as quick as possible
Mobile-first, responsive web apps
Expansion: Proven founder-product-market fit
More custom SQL instead of with ORMs
Database views for security
Established testing frameworks (e.g., clojure.test, Jest, RSpec, Capybara, etc.)
Many Unit tests
A few system, end-to-end tests of core functionality
Test-driven development
Inexpensive adaptability
High test coverage
Simple tests
Model domain a simple as possible
Minimize premature optimization
Break off a few major services that are fundamentally separate
Explore other technologies outside of The Citadel
Lower-level for performance
Larger community for hireability and tooling
Types for easing larger scale refactoring
Typescript/Golang?
Auto-scaling via Cloud infrastructure (e.g., AWS, Google Cloud, etc.)
API Gateway
Single domain for API
Let outside developers interface with back-end
GraphQL (optional)
Front-end declarative data fetching
Less knowledge of back-end API necessary
CDN front-end
Feature flagging for testing in production
More, stronger testing
A/B Testing with a lot of data to optimize key metrics
Extraction: Proven high, continual use
Dedicated specialists
Go to the metal or create your own metal if performance is needed
Rust
Apple Silicon
Consider building own, custom infrastructure
For business-specific problems
Native front-ends
iOS/Android
Vanilla JS, less libraries