This document guides developers through the process of creating new RealWorld implementations (frontend or backend) that adhere to the RealWorld API specification. It covers checking for work-in-progress implementations, using starter kits, following specifications, testing implementations, and submitting them to CodebaseShow.
For details on the API specification itself, see API Specification. For testing infrastructure details, see Testing Infrastructure. For the reference backend implementation, see Reference Implementation.
Creating a RealWorld implementation involves following a standardized process to ensure compatibility with the ecosystem's 150+ existing implementations. The fundamental principle is that any frontend can work with any backend because all implementations adhere to the same API specification defined in apps/documentation/src/assets/swagger.json1-1143
Sources: README.md23-36 apps/documentation/src/content/docs/implementation-creation/introduction.md1-20
Before starting a new implementation, check the GitHub Discussions to avoid duplicate efforts and potentially collaborate with others.
| Action | Location | Purpose |
|---|---|---|
| Browse WIP Discussions | github.com/realworld-apps/realworld/discussions/categories/wip-implementations | Find existing implementations in progress |
| Search by Technology | Filter discussions by framework/language name | Identify if your chosen stack is already being worked on |
| Contact Author | Comment on existing WIP discussion | Explore collaboration opportunities |
The RealWorld project discourages listing duplicate implementations to maintain quality and avoid fragmentation of community efforts.
Sources: README.md27 apps/documentation/src/content/docs/implementation-creation/introduction.md8-10
If no existing WIP matches your technology choice, fork the official starter kit repository.
The starter kit provides a basic project structure and documentation templates to help you get started quickly.
Sources: apps/documentation/src/content/docs/implementation-creation/introduction.md14 README.md36
Depending on whether you're creating a frontend or backend implementation, you must adhere to different specification documents.
Sources: apps/documentation/astro.config.mjs69-173 apps/documentation/src/content/docs/specifications/backend/introduction.md1-10
Backend implementations must implement 15 API endpoints organized into 6 categories as defined in apps/documentation/src/assets/swagger.json41-632:
| Category | Endpoints | Authentication |
|---|---|---|
| User and Authentication | /users/login, /users, /user (GET, PUT) | Some required |
| Profile | /profiles/{username}, /profiles/{username}/follow | Optional/Required |
| Articles | /articles, /articles/feed, /articles/{slug} | Optional/Required |
| Comments | /articles/{slug}/comments, /articles/{slug}/comments/{id} | Some required |
| Favorites | /articles/{slug}/favorite | Required |
| Tags | /tags | Not required |
Each endpoint must return responses conforming to the schemas defined in apps/documentation/src/assets/swagger.json634-1141
Frontend implementations must:
api.realworld.show)Sources: apps/documentation/src/content/docs/specifications/backend/introduction.md5-9 apps/documentation/src/content/docs/introduction.mdx32-33
Backend implementations must pass the comprehensive Postman test suite to ensure specification compliance.
To test your backend implementation locally, use the provided test script:
The test script api/run-api-tests.sh executes the Newman CLI with the Postman collection api/Conduit.postman_collection.json which validates:
The collection uses stateful testing, storing JWT tokens and article slugs across requests to test complete user workflows.
Sources: apps/documentation/src/content/docs/specifications/backend/postman.md1-10 apps/documentation/src/content/docs/specifications/backend/introduction.md5-9
Frontend implementations can be tested against multiple backend options, allowing flexibility during development.
The reference backend implementation provides two branches with different use cases:
| Branch | Use Case | Features | Location |
|---|---|---|---|
main | Local development | Full RealWorld spec, no restrictions | Recommended for testing |
limited | Public hosting | Content visibility restrictions, account isolation | Use for deployed demos |
The limited branch implements content isolation where:
This prevents free-form user content exposure on public APIs.
Sources: apps/documentation/src/content/docs/specifications/frontend/api.md1-55
https://api.realworld.show/api or your local backendSources: apps/documentation/src/content/docs/specifications/frontend/api.md36-43
Once your implementation is complete and tested, submit it to CodebaseShow for inclusion in the RealWorld ecosystem.
To submit your implementation:
Ensure your repository includes:
Visit https://codebase.show/projects/realworld and follow the submission process
Your implementation will be categorized as:
category=frontend) - Client-side implementationscategory=backend) - Server-side implementationsOnce listed, your implementation becomes part of the ecosystem and can be used by developers learning your chosen technology stack.
Sources: README.md17-25 apps/documentation/src/content/docs/implementation-creation/introduction.md17 apps/documentation/src/content/docs/introduction.mdx17-26
specifications/frontend/conduit-bootstrap-templatespecifications/frontend/routing.mdspecifications/backend/swagger.jsonToken security schemeapi-response-format.mderror-handling.mdcors.md./api/run-api-tests.shSources: apps/documentation/astro.config.mjs89-153 apps/documentation/src/assets/swagger.json1-1143
| Resource | Purpose | Location |
|---|---|---|
| GitHub Discussions | Ask questions, share progress | github.com/realworld-apps/realworld/discussions |
| WIP Implementations | Check existing projects, collaborate | discussions/categories/wip-implementations |
| CodebaseShow | Browse existing implementations | codebase.show/projects/realworld |
The repository includes a reference Node.js backend implementation in apps/api/ that demonstrates best practices for:
Study the reference implementation for guidance on implementing the specification correctly. See Reference Implementation for detailed documentation.
Sources: README.md15 apps/documentation/src/content/docs/introduction.mdx15
For mobile implementations (iOS/Android), the process is similar but with platform-specific considerations:
spec/mobile_icons/ in the repositoryswagger.jsonSources: apps/documentation/src/content/docs/specifications/mobile-specs/introduction.md1-12
Refresh this wiki