{"id":20181337,"url":"https://github.com/lasbrdev/socialhub-api-rest","last_synced_at":"2026-04-13T04:45:16.353Z","repository":{"id":220039771,"uuid":"750597184","full_name":"lasbrDev/socialhub-api-rest","owner":"lasbrDev","description":"SocialHub: Connect, Share, Engage","archived":false,"fork":false,"pushed_at":"2024-01-31T11:10:37.000Z","size":202,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-27T22:41:35.157Z","etag":null,"topics":["docker","docker-compose","dockerfile","java","linux","mongo-express","mongodb","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lasbrDev.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-01-30T23:58:12.000Z","updated_at":"2024-01-31T00:38:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"0af28b42-4b65-489d-a46a-309e52a917ac","html_url":"https://github.com/lasbrDev/socialhub-api-rest","commit_stats":null,"previous_names":["lasbrdev/socialhub-api-rest"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lasbrDev/socialhub-api-rest","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lasbrDev%2Fsocialhub-api-rest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lasbrDev%2Fsocialhub-api-rest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lasbrDev%2Fsocialhub-api-rest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lasbrDev%2Fsocialhub-api-rest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lasbrDev","download_url":"https://codeload.github.com/lasbrDev/socialhub-api-rest/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lasbrDev%2Fsocialhub-api-rest/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271751896,"owners_count":24814702,"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","status":"online","status_checked_at":"2025-08-23T02:00:09.327Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["docker","docker-compose","dockerfile","java","linux","mongo-express","mongodb","spring-boot"],"created_at":"2024-11-14T02:35:07.701Z","updated_at":"2026-04-13T04:45:11.312Z","avatar_url":"https://github.com/lasbrDev.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SocialHub - Plataforma de Interação Social\n\n## Descrição do Projeto\n\nO SocialHub é uma aplicação que simula uma experiência de interação social entre usuários. Os usuários podem postar status e outros usuários podem adicionar comentários aos posts. O projeto é desenvolvido em Java utilizando o framework Spring Boot e MongoDB como banco de dados.\n\n## Estrutura do Projeto\n\nO projeto está dividido em pacotes, cada um responsável por uma parte específica da aplicação.\n\n- `br.com.lasbr.socialhub`: Contém a classe principal da aplicação (`SocialhubApplication`), responsável por iniciar a aplicação Spring Boot.\n  \n- `br.com.lasbr.socialhub.domain`: Contém as classes que representam o modelo de domínio da aplicação. As principais classes são `User` e `Post`, que representam usuários e posts, respectivamente.\n\n- `br.com.lasbr.socialhub.dto`: Contém classes DTO (Data Transfer Object) que são utilizadas para transferência de dados entre as camadas da aplicação.\n\n- `br.com.lasbr.socialhub.repositories`: Contém interfaces de repositório que estendem o `MongoRepository` do Spring Data MongoDB para acesso ao banco de dados.\n\n- `br.com.lasbr.socialhub.resources`: Contém os controladores REST que lidam com as requisições HTTP. `PostResources` trata das operações relacionadas aos posts, enquanto `UserResource` trata das operações relacionadas aos usuários.\n\n- `br.com.lasbr.socialhub.resources.exception`: Contém classes para tratamento de exceções específicas da aplicação.\n\n- `br.com.lasbr.socialhub.resources.util`: Contém classes utilitárias, como `URL`, responsável por decodificar parâmetros de URL, e outras classes úteis.\n\n- `br.com.lasbr.socialhub.services`: Contém as classes de serviço que implementam a lógica de negócio da aplicação. `PostService` e `UserService` realizam operações relacionadas a posts e usuários, respectivamente.\n\n- `br.com.lasbr.socialhub.services.exception`: Contém exceções específicas da aplicação.\n\n## Endpoints\n\n### Posts:\n\n- `GET /posts/{id}:` Obtém um post pelo ID.\n\n- `GET /posts/titlesearch?text={text}:` Busca posts pelo título.\n\n- `GET /posts/fullsearch?text={text}\u0026minDate={minDate}\u0026maxDate={maxDate}:` Busca completa considerando texto, data mínima e máxima.\n\n### Usuários:\n\n- `GET /users:` Lista de todos os usuários.\n\n- `GET /users/{id}:` Obtém um usuário pelo ID.\n\n- `POST /users:` Cria um novo usuário.\n\n- `DELETE /users/{id}:` Exclui um usuário pelo ID.\n\n- `PUT /users/{id}:` Atualiza informações de um usuário pelo ID.\n\n- `GET /users/{id}/posts:` Lista de posts de um usuário.\n\n## Exceções Personalizadas\n\nA aplicação trata exceções personalizadas, como a `ObjectNotFoundException`, retornando respostas HTTP adequadas. Isso proporciona uma experiência mais amigável para o usuário.\n\n\n## Próximas Implementações TO-DO\n\nA seguir estão algumas funcionalidades adicionais que serão implementadas para enriquecer a experiência na plataforma SocialHub:\n\n### Para Posts:\n\n- **Curtir um Post:**\n\n  - `POST /posts/{id}/like:` Adiciona uma curtida a um post específico.\n\n- **Compartilhar um Post:**\n\n  - `POST /posts/{id}/share:` Compartilha um post específico.\n\n- **Apagar um Comentário:**\n\n  - `DELETE /posts/{postId}/comments/{commentId}:` Remove um comentário de um post.\n\n- **Desfazer Curtida em um Post:**\n\n  - `DELETE /posts/{id}/like:` Remove a curtida de um post específico.\n\n### Para Usuários:\n\n- **Adicionar Foto ao Perfil:**\n\n  - `POST /users:` Adiciona uma foto ao perfil do usuário.\n\n- **Adicionar Data de Aniversário:**\n\n  - `POST /users:` Adiciona a data de aniversário do usuário.\n\n- **Adicionar Descrição do Perfil:**\n\n  - `POST /users:` Adiciona a descrição do perfil do usuário.\n  \n  - **Atualizar Descrição do Perfil:**\n\n  - `PUT /users/{id}/description:` Atualiza a descrição do perfil do usuário.\n\n### Outros:\n\n- **Listar Curtidas em um Post:**\n\n  - `GET /posts/{id}/likes:` Obtém a lista de usuários que curtiram um post.\n\n- **Listar Compartilhamentos de um Post:**\n\n  - `GET /posts/{id}/shares:` Obtém a lista de usuários que compartilharam um post.\n\n- **Listar Comentários de um Post:**\n\n  - `GET /posts/{id}/comments:` Obtém a lista de comentários de um post.\n---\n\n## Requisitos\n\nPara executar a aplicação SocialHub, você precisará dos seguintes requisitos instalados em sua máquina:\n\n- [Java 17](https://www.oracle.com/java/technologies/javase-downloads.html)\n- [Spring Boot](https://spring.io/projects/spring-boot)\n- [MongoDB](https://www.mongodb.com/try/download/community)\n- [Insomnia](https://insomnia.rest/download)\n\n## Configuração do MongoDB (via Docker - opcional)\n\nSe preferir, você pode usar Docker para configurar um ambiente MongoDB facilmente. Certifique-se de ter o Docker instalado.\n\nAdicione um arquivo docker-compose.yml na raiz do projeto, com as configurações abaixo:\n\n\n```yml\nversion: '3.8'\n\nservices:\n  mongo-dev:\n    image: mongo:latest\n    container_name: mongo_dev\n    networks:\n      - REDEMONGO\n    volumes:\n      - ./db_data:/data/db\n    environment:\n      MONGO_INITDB_ROOT_USERNAME: root\n      MONGO_INITDB_ROOT_PASSWORD: password\n    labels:\n      - \"com.docker.compose.project=mongo-project\"\n      - \"com.docker.compose.service=mongo-dev\"\n      - \"com.docker.volume.name=mongo_dev\"\n\n  mongo-ui:\n    image: mongo-express:latest\n    container_name: mongo_ui\n    networks:\n      - REDEMONGO\n    ports:\n      - \"8081:8081\"\n    environment:\n      ME_CONFIG_MONGODB_ADMINUSERNAME: root\n      ME_CONFIG_MONGODB_ADMINPASSWORD: password\n      ME_CONFIG_MONGODB_URL: mongodb://root:password@mongo_dev:27017/\n    labels:\n      - \"com.docker.compose.project=mongo-project\"\n      - \"com.docker.compose.service=mongo-ui\"\n      - \"com.docker.volume.name=mongo_ui\"\n\nnetworks:\n  REDEMONGO:\n    driver: bridge\n```\n\nPara acessar o `mongo-express (mongo_ui),` você pode acessar o endereço http://localhost:8081 \n\n\tUsername: admin\n\tPassword: pass\n\n![mongo_ui.png](src/main/resources/docs/prints/mongo_ui.png)\n\n\n## Utilização da Aplicação\n\nPara utilizar a aplicação, você pode clonar este repositório e executar a aplicação localmente. Certifique-se de ter um ambiente configurado com Java e MongoDB.\n\n1. Clone o repositório:\n\n```bash\ngit clone https://github.com/lasbrDev/socialhub.git\n```\n\nAbrir a aplicação na sua IDE favorita para Java e testar.\n\n## Contribuições\n\nContribuições são bem-vindas! Sinta-se à vontade para abrir issues, propor melhorias ou enviar pull requests.\n   \n## Licença   \n\nEste projeto está licenciado sob a [MIT LICENSE](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flasbrdev%2Fsocialhub-api-rest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flasbrdev%2Fsocialhub-api-rest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flasbrdev%2Fsocialhub-api-rest/lists"}