Here's a summary of my current thoughts on technical selection and development policies for future application development. I've established guidelines that consider development speed, maintainability, and business models.
Authentication Infrastructure
Instead of developing a custom authentication system, I'll adopt Clerk.
Reasons for Choosing Clerk
- Security Assurance: Avoid the risks of implementing authentication security ourselves
- Improved Development Speed: Focus on core feature development without spending time on authentication implementation
- Authentication Sharing Across Subdomains: Authentication information can be shared across subdomains by default
- UI Component Provision: Sophisticated authentication UI is available out of the box
While there are costs involved, considering the overall development and operational costs, I believe it's a choice that will pay for itself.
Technology Stack Selection
All applications will be developed based on React. I'll use different frameworks depending on the use case.
Applications Without Authentication
Web Applications
- Next.js (SSG)
- Achieve high performance through static site generation
- Use
'use client'
for client-side rendering where JavaScript is needed - Optimal for content where SEO is important
Mobile Applications
- Expo
- Efficient mobile app development based on React Native
- Support for both iOS and Android platforms
- Maximize development efficiency with hot reload
Desktop Applications
- Electron
- Develop cross-platform desktop apps with web technologies
- Support for Windows, macOS, and Linux
SSR Applications (Under Consideration)
Options under consideration for cases requiring SSR:
- Next.js: When prioritizing track record and stability
- React Router v7: When seeking a lighter and simpler configuration
Business Model
Adoption of Subscription Model
Applications with authentication will basically adopt a subscription model.
Reasons for Adoption
- Covering Ongoing Operational Costs:
- Database and server operational costs
- Clerk authentication service fees
- Other SaaS tool usage fees
- Providing Valuable Services:
- Motivation to improve service quality by providing value that matches the price
- Users' commitment level increases, leading to the formation of a quality community
Future Prospects
If alternative revenue sources can be secured, I'll consider offering free plans.
Infrastructure
Cloudflare-Based Architecture
The infrastructure base will adopt Cloudflare.
Reasons for Adoption
- With the arrival of OpenNext, an environment has been established where Next.js can be adopted even with Cloudflare
- Global Edge Network: Fast response from anywhere in the world
- Cost Efficiency: Pay-as-you-go pricing, appropriate cost according to scale
- Security: DDoS protection and WAF available as standard
Database
We'll adopt Turso for the database.
Turso Features
- SQLite-based: Lightweight and fast
- Edge Execution: Good compatibility with Cloudflare
- Global Replication: Reduced latency worldwide
- Serverless: Pay only for what you use
Separation of Common Features
Features commonly used across multiple applications, such as contact forms, will be developed as dedicated microservices.
Benefits
- Improved Reusability: Features developed once can be used in multiple apps
- Enhanced Maintainability: Updates only need to be made in one place
- Independent Scaling: Can be scaled up individually as needed
Summary
This policy will achieve the following:
- Maximize Development Speed: Utilize existing tools for non-core features like authentication and UI
- Ensure Maintainability: Unify on React base and keep the technology stack simple
- Sustainable Business Model: Secure continuous revenue through subscription model
- Scalability: Efficient scaling possible through separation of common features
Moving forward, I'll proceed with application development based on this policy. The policy will be reviewed and optimized as necessary.