[![GitHub tag (latest by date)][tag-shield]][tag-url] [![Contributors][contributors-shield]][contributors-url] [![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url]
We.Publish is more than just a CMS; it is a journalistic ecosystem designed to strengthen independent journalism and freedom of the press.
By providing a modern, open-source Headless CMS, we enable publishers to create, manage, and engage with their audience effectively. Unlike traditional CMS platforms, We.Publish features a unique Peering Network, allowing connected newsrooms to share content seamlessly, expand their reach, and collaborate on stories.
In addition to its headless capabilities, We.Publish includes a powerful Website Builder. This tool allows developers to quickly spin up fully functional websites for media outlets, complete with necessary components and pre-configured connections to the API and CMS editor.
We are experienced in launching new media. With our specialized product we.start, we support local initiatives to found and grow independent journalistic media in their city, town, or region. By joining our network, you not only get the technology but also access to shared expertise and experience from a community dedicated to the success of independent journalism and the freedom of the press.
- Advanced Block Editor: Create rich content with titles, galleries, listicles, quotes, embeds, polls, events, and tables.
- Media Management: Integrated image library with automatic metadata import and optimized delivery for all devices.
- SEO & Scheduling: Built-in SEO optimizations and scheduled publication features.
- Peering Network: Seamlessly share and publish articles across different newsrooms within the network.
- Engagement Tools: Moderated comment system, polls, and integrated crowdfunding to build a loyal community.
- Author Profiles: Dedicated pages and profiles for your journalists.
- Powerful Subscription System: Flexible subscription models, paywalls, and automatic renewal management.
- Dashboard & Analytics: Track audience engagement and subscription metrics.
- Integrations: Native support for payments (Stripe, Payrexx, Mollie), invoicing (Bexio), and email marketing (Mailchimp, Mailgun).
- Headless & API-First: Decoupled architecture using GraphQL, NestJS, and React.
- Website Builder: Rapidly spin up connected websites with pre-built components.
- Granular Permissions: Role-based access control for editors, community managers, and admin staff.
- Monorepo: Managed with Nx for scalable development.
- Runtime: Node.js (v22+)
- Language: TypeScript
- API: NestJS & GraphQL
- Frontend: Next.js & React
- UI Framework: MUI
- Database: PostgreSQL & Prisma
- Workspace: Nx
Follow these steps to set up your local development environment.
Ensure you have the following installed:
-
Clone the repository
git clone https://github.com/wepublish/wepublish.git cd wepublish -
Install dependencies
npm install
-
Start the development environment This command starts the database and storage services via Docker, runs migrations, and launches the API, Editor, and Website in watch mode.
npm run dev
Note The first start might take a few moments as it seeds the database and builds the applications.
Once the development server is running, you can access the applications at:
| Application | URL | Default Credentials |
|---|---|---|
| Editor (CMS) | http://localhost:4200 | dev@wepublish.ch / 123 |
| Website Example | http://localhost:4300 | - |
| API | http://localhost:4000/graphql | - |
| Media Server | http://localhost:3000 | - |
(Note: Port numbers may vary based on your local configuration or nx.json setups. Check terminal output for exact URLs.)
This project is organized as an Nx monorepo:
apps/api-example: The backend GraphQL API server.editor: The back-office React application for content management.website-example: A reference frontend implementation.media: Service for handling image and file assets.
libs/: Shared libraries containing core logic (api, utils, ui components).- Note: Many libraries (e.g.,
article,page) include awebsite/folder. These modular components power our Website Builder, facilitating the rapid assembly of connected websites.
- Note: Many libraries (e.g.,
To run the test suite across the entire workspace:
npm run testOr run tests for a specific project:
npx nx test api-exampleFor comprehensive guides on architecture, deployment, and usage, please visit our official documentation:
https://we-publish.gitbook.io/we.publish
We welcome contributions from the community!
- Fork the Project
- Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin f/AmazingFeature) - Open a Pull Request
Please review our CONTRIBUTING.md and CODE_OF_CONDUCT.md for more details.
-
- Admin:
- username:
admin@example.com - password:
demoPassword123
- username:
- Editor
- username:
editor@example.com - password:
demoPassword123
- username:
- Admin:
While We.Publish is open source and free to use, the We.Publish Foundation offers professional services to help you get the most out of the platform.
Get we.start | New Media Launchpad: A specialized package for startups founding new media in their city or region. Includes technical setup, network access, and guidance to succeed in the market.
- Managed Hosting & Maintenance: Secure and reliable hosting solutions.
- Custom Development: Tailored feature implementation and modifications.
- Consulting & Support: Expert guidance for your media project and access to our network's shared expertise for the good of press freedom
Many news sites have been successfully powered by We.Publish for years. We are proud to support a diverse ecosystem of independent journalism:
| REFLEKT | Bajour | Tsüri.ch | Hauptstadt |
| OnlineReports | Wnti.ch | Mannschaft | Zwölf |
| Flimmer | Wav | BKA | Cültür |
Contact us at info@wepublish.ch
Self-Hosting & Community Support: If you are self-hosting We.Publish, please reach out to us via email. We would love to add you to our Slack channel, connecting you directly with our IT team and the wider We.Publish developer community.
Project Link: https://github.com/wepublish/wepublish
Distributed under the MIT License. See LICENSE for more information.