{"id":21486262,"url":"https://github.com/barata-ribeiro/sabia","last_synced_at":"2026-04-10T01:39:49.105Z","repository":{"id":239014049,"uuid":"792271874","full_name":"Barata-Ribeiro/sabia","owner":"Barata-Ribeiro","description":"Sabiá is a full-stack micro blogging social network based on X (former Twitter), where users can post, like, and comment on posts.","archived":false,"fork":false,"pushed_at":"2024-09-06T11:14:20.000Z","size":1854,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-23T19:38:50.820Z","etag":null,"topics":["hibernate","java","java-21","microblogging-application","next-intl","nextjs14","postgres","postgresql","rest","restful-api","spring-boot","spring-boot-3","tailwindcss","twitter-clone","x","x-twitter"],"latest_commit_sha":null,"homepage":"https://sabia-psi.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Barata-Ribeiro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-26T10:23:15.000Z","updated_at":"2024-09-06T11:14:25.000Z","dependencies_parsed_at":"2024-06-01T16:39:13.037Z","dependency_job_id":"baf34fd3-4f8e-47ab-b961-831b04aac6ea","html_url":"https://github.com/Barata-Ribeiro/sabia","commit_stats":null,"previous_names":["barata-ribeiro/sabia"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Barata-Ribeiro%2Fsabia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Barata-Ribeiro%2Fsabia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Barata-Ribeiro%2Fsabia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Barata-Ribeiro%2Fsabia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Barata-Ribeiro","download_url":"https://codeload.github.com/Barata-Ribeiro/sabia/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244014176,"owners_count":20383715,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hibernate","java","java-21","microblogging-application","next-intl","nextjs14","postgres","postgresql","rest","restful-api","spring-boot","spring-boot-3","tailwindcss","twitter-clone","x","x-twitter"],"created_at":"2024-11-23T13:20:08.171Z","updated_at":"2025-12-31T00:17:53.173Z","avatar_url":"https://github.com/Barata-Ribeiro.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sabiá - Microblogging platform 🪶\n\nSabiá is a **full-stack** microblogging social network inspired by **X** (formerly Twitter). It allows users to post, like, and comment on posts, providing a seamless and engaging social experience. Built as a personal portfolio project, Sabiá showcases a robust and scalable architecture using modern web development technologies.\n\nThis repository contains both the backend and frontend implementations of **Sabiá**. The backend is powered by **Java Spring Boot**, ensuring reliable performance and security. The frontend is built with Next.js, offering a dynamic and responsive user interface. Together, these technologies create a fully functional and visually appealing microblogging platform.\n\n**Attention❗**\n\nThis project does not include many advanced features found in commercial social networks like X (formerly Twitter). Complex algorithms and resource-intensive functionalities such as trending topics, sophisticated recommendation systems, and real-time updates are not supported. This project aims to demonstrate fundamental concepts and a scalable architecture using modern web development technologies, rather than replicating the full feature set of a production-level social network.\n\n## Demo\n![Sabiá](screenshot_demo.png \"Sabiá\")\n\n![Sabiá-2](screenshot_demo-2.png \"Sabiá, demo 2\")\n\n**Live Demo**: [Sabiá](https://sabia-psi.vercel.app/)\n\n## Main Technologies 🚀\n\n### Backend\n\n- [Java 21](https://adoptium.net/): Programming language used for backend development.\n- [Spring Boot](https://spring.io/projects/spring-boot): Framework for building Java-based applications.\n- **Spring Data JPA**: Simplifies database access.\n- **Spring Security**: Provides authentication and authorization.\n- **Springdoc OpenAPI**: Integrates OpenAPI documentation.\n- [PostgreSQL](https://www.postgresql.org/): Relational database system.\n- **H2 Database**: In-memory database for development and testing.\n- [JWT (JSON Web Tokens)](https://jwt.io/): For secure user authentication.\n- **ModelMapper**: For object mapping.\n- **Lombok**: Reduces boilerplate code.\n\n### Frontend\n\n- [Next.js](https://nextjs.org/): A React framework for building fast web applications.\n- [React](https://react.dev/): A JavaScript library for building user interfaces.\n- [Tailwind CSS](https://tailwindcss.com/): A utility-first CSS framework for rapid UI development.\n- [React Icons](https://react-icons.github.io/react-icons/): A library of icons for React applications.\n- [Sharp](https://sharp.pixelplumbing.com/): High-performance image processing in Node.js.\n- [Plaiceholder](https://plaiceholder.co/): Handling image placeholders with blur effects.\n\n## Setup 💻\n\n### Backend Setup\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/Barata-Ribeiro/sabia.git\n   cd sabia/server\n   ```\n\n2. Set up the PostgreSQL database:\n   Use the provided `docker-compose.yml` file to set up the database:\n   ```bash\n   docker-compose up -d\n   ```\n\n3. Set up environment variables:\n   Create a `application.properties` file in the `src/main/resources` directory and add the following variables:\n   ```properties\n   springdoc.api-docs.path=/api-docs\n   spring.application.name=sabia\n\n   # Postgres configuration\n   spring.datasource.url=jdbc:postgresql://${DB_ORIGIN:localhost}:${DB_PORT:5432}/${DB_NAME:sabia_test}\n   spring.datasource.username=${DB_USER:postgres}\n   spring.datasource.password=${DB_PASSWORD:postgres}\n   spring.datasource.driver-class-name=org.postgresql.Driver\n   spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect\n   spring.jpa.hibernate.ddl-auto=update\n   spring.jpa.show-sql=true\n   spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true\n\n   # JWT, CORS, and Seeder configuration\n   api.security.token.secret=${JWT_SECRET:secret}\n   api.security.cors.origins=${CORS_ORIGINS:http://localhost:3000}\n   api.security.seeder.admin.username=${ADMIN_USERNAME:admin}\n   api.security.seeder.admin.displayName=${ADMIN_DISPLAY_NAME:Admin}\n   api.security.seeder.admin.fullName=${ADMIN_FULL_NAME:Admin}\n   api.security.seeder.admin.birthDate=${ADMIN_BIRTH_DATE:1990-01-01}\n   api.security.seeder.admin.password=${ADMIN_PASSWORD:admin}\n   api.security.seeder.admin.email=${ADMIN_EMAIL:admin@example.com}\n   api.security.seeder.admin.avatarUrl=${ADMIN_AVATAR_URL}\n   api.security.seeder.admin.coverUrl=${ADMIN_COVER_URL}\n   ```\n   You can also set these variables in the `application.properties` file by using your own values.\n\n4. Build and run the application:\n   ```bash\n   ./mvnw spring-boot:run\n   ```\n\n### Frontend Setup\n\n1. Navigate to the frontend directory:\n   ```bash\n   cd ../client\n   ```\n\n2. Install dependencies:\n   ```bash\n   npm install\n   ```\n\n3. Set up environment variables:\n   Create a `.env` file in the `frontend` directory and add the following variables:\n   ```env\n   JWT_BACKEND_SECRET=your_backend_jwt_secret_key\n   UNSPLASH_ACCESS_KEY=your_unsplash_access_key\n   BACKEND_ORIGIN=your_backend_server_origin\n   ```\n\n4. Run the application:\n   ```bash\n   npm run dev\n   ```\n   \n## Known Issues!! 🐛\n\n- The frontend is not yet fully translated into Brazilian Portuguese.\n- The frontend's internationalization of certain routes is not working properly, due to the limitations of the Next.\n  js framework with the [next-intl](https://next-intl-docs.vercel.app/) library.\n- The `Terms of Service` page is not yet implemented, so be careful when using the application.\n- The `Settings` page is not fully implemented, so you cannot change your profile information as of now.\n- Some CSS styles are not yet fully responsive, so the application may not look good on all devices.\n- Some CSS are not yet fully implemented.\n\n## Contributing 🤝\n\nContributions, issues, and feature requests are welcome! Feel free to check the [issues page](https://github.com/Barata-Ribeiro/sabia/issues) if you want to contribute.\n\n## License 📜\n\nThis project is free software available under the [GPLv3](LICENSE) license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarata-ribeiro%2Fsabia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbarata-ribeiro%2Fsabia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarata-ribeiro%2Fsabia/lists"}