1. Start with a reliable core
Publish Haven is a Django application with models for writers, publications, articles, subscribers, newsletter deliveries, and comments. A relational database keeps stories and memberships linked safely.
2. Give each article a stable address
Use a publication slug and an article slug in the URL. Keep a draft private until it is published. Render author Markdown through an allowlist so links and code are readable without letting arbitrary HTML run.
3. Separate reading from delivery
The web article is the canonical page. An RSS feed exposes published public stories. The newsletter worker sends only articles explicitly marked for email to confirmed subscribers, records each delivery, and includes unsubscribe links.
4. Protect membership access
Paid articles show a public summary. A confirmed subscription and an active payment state grant access to the body. Hosted checkout and signed webhooks should determine the payment state; do not trust a browser redirect alone.
5. Add community and distribution
Review reader comments before they appear. Generate a share image and social draft for each public article. Connect external platforms through their authorized APIs or a feed scheduler only after the writer grants access.
6. Deploy and keep checking
Run migrations on a persistent database, serve static assets, verify DNS and TLS, and test sign-in, publishing, subscriptions, and payment webhooks before opening registrations or paid plans.