"Information should be free. It's an ethical imperative. Only information tied to a physical product should have a monetary cost attached to it." - Aaron Swartz
Storiny is where you and your ideas belong, serving a space for like-minded individuals to connect, share experiences, and valuable knowledge without the hassle of managing stuff that happens behind the scenes on the vast internet.
Unlike a personal blog, publishing on Storiny is like sharing your ideas in a giant, welcoming room filled with diverse readers, creating opportunities for learning, growth, and meaningful connections.
You own your ideas, and they are never restricted behind a paywall.
- Turborepo orchestrates our multi-package architecture and provides cached builds across the monorepo
- Frontend framework: Next.js handles the main SSR/SSG web application routing, API routes, and page generation
- State management: Jotai manages atomic global state across the interactive components
- Collaborative editor: A heavily customized engine built around Lexical and Yjs (CRDTs) for real-time multi-peer story editing
- Styling: SCSS modules and CSS variables power the custom Snowflake design system
- Testing: Playwright for integration and editor tests, Jest for unit tests
- RPC for inter-service communication: gRPC client stub for communication with
storiny-api
This repository houses the entire frontend:
- Applications (
apps/)web: The Next.js frontend app
- Packages (
packages/)editor: A real-time, collaborative rich-text editor built on top of Lexical and Yjs. This package syncs with thestoriny-apibackend service (runningyrs) via web sockets to enable multi-peer document editing and syncui: The custom Snowflake design systemwhiteboard: An infinite canvas whiteboard componentproto: Shared gRPC IDL files for all micro servicesmail: Pre-compiled responsive email templates used across the platform
The project began as a monolith in this repository and was later split into multiple microservices as complexity grew:
storiny/web(this repository): Contains the source code for the main site, blogs, the Snowflake design system, and gRPC IDL definitions.storiny/api: Contains the source code for REST API endpoints and the real-time collaborative engine.storiny/discovery: Contains the source code for the Discovery service, which is responsible for embedding and rendering third-party content in stories.storiny/og: Contains the source code for the dynamic Open Graph image generation service used for social previews.storiny/cdn: Contains the source code for the CDN service.storiny/eslint-config: Shared ESLint configuration.storiny/prettier-config: Shared Prettier configuration.storiny/tsconfig: Shared TypeScript configuration.
- Snowflake design system: https://www.figma.com/design/0cENs5ojK3gEPON9GZYN1Y/Snowflake-Design-System
- Main site: https://www.figma.com/design/GpSLRc3O19ocgtl8sOff5i/Main-Site
- Dashboard: https://www.figma.com/design/sA8vHzcxqGpFF6HmKmzZ2Z/Dashboard
After around 4.5 years of development and maintenance, Storiny has now been sunset. Continuing active development is outside my available bandwidth and I want to focus on other projects and commitments.
All existing users have been emailed with a link to download a complete archive of their data, including profiles, images, stories, and responses.
Since the project didn't take off as intended, it has been open-sourced. I won't be accepting major PRs or new feature requests, but minor fixes are welcome. Feel free to fork it and take it wherever you want.
- zignis