TabNews: Open-Source Tech Community Platform for Brazilian Developers
Conteúdos para quem trabalha com Programação e Tecnologia.
At a glance
- What is it?
- TabNews is an open-source discussion platform for the Brazilian technology community, built on Next.js with a PostgreSQL database and a Docker-based local development environment. The repository contains both the site's frontend and its public API, which can be used independently to build related projects.
- Who is it for?
- TabNews is worth studying for a developer who wants a real-world example of a Portuguese-language community platform built with a modern Next.js stack, PostgreSQL, and a well-tested API. It is not a generic template or framework: the content, the community conventions, and the public API endpoints are specific to tabnews.com.br.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 15 days ago.
- What is it written in?
- Mainly HTML, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What TabNews Is and the Community It Serves
TabNews is a discussion and content platform focused on the Brazilian technology community. The README describes it as a site for technology and programming professionals, intended for debates and knowledge exchange through publications and comments created by the users themselves.
The repository contains the full source code for both the site and the API. The platform exposes public APIs that developers can use to build related projects, subject to the platform's terms of use. This makes the repository useful both to contributors who want to improve the platform and to developers who want to build on top of its API.
The project was started by Filipe Deschamps, and the development history is documented in the repository's Wiki, which the README says began with 40 publications covering how the idea originated and the evolution of the platform's architecture. Milestones in the development history are also tracked there, giving contributors a record of the decisions behind the current architecture.
The live site at tabnews.com.br is the production deployment. The repository is maintained by a contributor community, with code changes going through pull requests that are discussed in the issue tracker before implementation. The FAQ at tabnews.com.br/faq is the recommended resource for understanding the platform's content and moderation conventions before contributing.
Technology Stack and What Drives Local Setup Complexity
The stack is Next.js running against a PostgreSQL database, with nodemailer and Docker providing the email and database services in development. The package.json lists React 19 and Next.js at version 16, with Vitest as the test runner and Docker Compose as the container orchestration layer.
The README describes local setup as extremely simple, but the dependencies tell a more specific story. Node.js LTS v24 (specifically v24.14.1 or higher) and Docker Engine v17.12.0 with Docker Compose v1.29.2 or higher are required globally before any project-specific setup.
The `npm run dev` command starts all required services at once: it brings up a PostgreSQL database with migrations applied, a local email server, and the Next.js application. The web frontend and API are both served from localhost:3000, and the API status endpoint is at localhost:3000/api/v1/status. The local email service, used for testing activation emails, runs at localhost:1080.
The package is a monorepo using npm workspaces. Internal packages such as `@tabnews/forms`, `@tabnews/ui`, `@tabnews/hooks`, and `@tabnews/infra` are workspace packages listed in the dependencies.
Installing and Running TabNews Locally
With Docker Engine and Node.js v24 installed, the local setup is:
npm installThen start all services:
npm run devThis starts the database, email server, and Next.js frontend together. The site is available at:
http://localhost:3000/
http://localhost:3000/api/v1/statusStopping all services uses Ctrl+C. Other service addresses and credentials are in the `.env` file at the project root.
For local authentication, `npm run dev` injects two pre-activated test users automatically. The admin user is `[email protected]` with password `password`, and the standard user is `[email protected]` with password `password`. Creating a custom user requires visiting `http://localhost:3000/cadastro`, submitting the form with any valid email format, then activating the account via the email at `http://localhost:1080/`.
Running and Filtering the Test Suite
The test suite runs with:
npm testThis starts all services, runs all tests, then stops the services. For active development with tests re-running on file changes, the watch mode command is:
npm run test:watch:servicesTo run tests in two separate terminals, the first terminal runs `npm run dev` and the second runs `npm run test:watch`. The README notes that the web service and Vitest logs will mix in the single-terminal watch mode, which is why two terminals can be preferable.
Filtering to specific test files uses a path substring:
npm run test -- v1/users/ v1/status/Or for a single test file:
npm run test -- registration-flowThe README notes that path handling and special character interpretation can differ by operating system and terminal. The filter approach works with partial paths and does not require the full file path.
Contributing to the Codebase and the Four Contribution Paths
The README describes four ways to contribute. The first is creating content on the live tabnews.com.br site: publishing articles or comments that add value to other readers. The second is reporting security issues privately, which the README emphasizes must be done privately rather than as a public issue to avoid disclosing vulnerabilities before the maintainers can address them. The contributing guide at CONTRIBUTING.md describes the private reporting process.
The third path is participating in issue discussions without writing code: adding detail to problem reports or contributing implementation ideas in the issue tracker. The fourth is submitting pull requests with solutions to issues that have already been discussed and agreed upon in the issue tracker.
This last point is specific: PRs for changes that have not been pre-debated in an issue are outside the expected contribution workflow. A developer who spots a potential improvement should open an issue for discussion before investing time in an implementation.
The repository uses commitlint with conventional commit format, enforced by Husky hooks. The package.json lists both `@commitlint/cli` and `@commitlint/config-conventional` as dev dependencies, and `commitlint.config.js` is present at the root.
The Public API, Architecture Decisions, and License
The README mentions that TabNews provides public APIs for building related projects, subject to the terms of use at tabnews.com.br/termos-de-uso. The API version is v1, and the test suite structure reveals paths under `/api/v1/` for users, contents, and status resources. The status endpoint at localhost:3000/api/v1/status provides a health check for the running services.
The monorepo structure with npm workspaces separates concerns into internal packages: `@tabnews/forms` for form components, `@tabnews/ui` for shared UI primitives, `@tabnews/hooks` for React hooks, and `@tabnews/infra` for infrastructure utilities. This separation means contributors working on a specific area of the platform can focus on the relevant package without touching the main application code.
The database layer uses node-pg-migrate for schema migrations. The `npm run dev` command applies migrations automatically when starting the local environment, so a fresh clone always starts with an up-to-date schema. The migration files are in the `infra/` directory alongside the database configuration.
The repository's license field is NOASSERTION in the metadata, and the README does not reproduce the license terms. Developers planning to use the API or any code from the repository in their own projects should check the LICENSE file at the repository root before proceeding.
The last push to the repository was on 2026-09-16. The project is not archived. The `.gitpod.yml` file indicates a Gitpod-based development environment is available, and the `.github/` directory contains CI workflows. The `errors/` directory at the root suggests the platform has a structured approach to error handling, with errors defined as named resources.
Editorial conclusion
TabNews is worth studying for a developer who wants a real-world example of a Portuguese-language community platform built with a modern Next.js stack, PostgreSQL, and a well-tested API. It is not a generic template or framework: the content, the community conventions, and the public API endpoints are specific to tabnews.com.br. A developer wanting to contribute should start with the README's contribution guidelines, which describe four distinct paths: creating content on the live site, reporting security issues privately, participating in issue discussions, and submitting code PRs for issues that have been pre-debated.
Frequently asked questions
What language is TabNews written in and what is it for?
TabNews is a Next.js application with a PostgreSQL backend. The platform is a discussion and content site for the Brazilian technology community, available in Portuguese at tabnews.com.br. The repository also exposes public APIs that other developers can use to build related projects.
What do I need installed to run TabNews locally?
The README requires Node.js LTS v24 (v24.14.1 or higher) and Docker Engine v17.12.0 with Docker Compose v1.29.2 or higher. With those in place, running npm install and then npm run dev starts the database, email server, and frontend together.
How do I submit a code contribution to TabNews?
The README's contribution workflow requires opening an issue for discussion before writing any code. Pull requests should implement solutions to issues that have already been debated and agreed upon. The repository uses conventional commit format enforced by commitlint and Husky pre-commit hooks.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/filipedeschamps-tabnews-com-br)