{"id":28228602,"url":"https://github.com/akhilk2802/fordocs","last_synced_at":"2026-04-16T04:31:50.203Z","repository":{"id":263354788,"uuid":"792357361","full_name":"akhilk2802/ForDocs","owner":"akhilk2802","description":"Reddit-like platform for doctors","archived":false,"fork":false,"pushed_at":"2025-02-10T02:27:21.000Z","size":152,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-12T23:39:15.543Z","etag":null,"topics":["hibernate","hibernate-jpa","java","jsp","mvc","mvc-architecture","postgresql","servlets","spring"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/akhilk2802.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-26T13:59:40.000Z","updated_at":"2025-02-10T02:27:25.000Z","dependencies_parsed_at":"2024-11-18T09:08:33.929Z","dependency_job_id":null,"html_url":"https://github.com/akhilk2802/ForDocs","commit_stats":null,"previous_names":["akhilk2802/fordocs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/akhilk2802/ForDocs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akhilk2802%2FForDocs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akhilk2802%2FForDocs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akhilk2802%2FForDocs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akhilk2802%2FForDocs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akhilk2802","download_url":"https://codeload.github.com/akhilk2802/ForDocs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akhilk2802%2FForDocs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31871479,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"online","status_checked_at":"2026-04-16T02:00:06.042Z","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":["hibernate","hibernate-jpa","java","jsp","mvc","mvc-architecture","postgresql","servlets","spring"],"created_at":"2025-05-18T15:12:45.982Z","updated_at":"2026-04-16T04:31:50.194Z","avatar_url":"https://github.com/akhilk2802.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ForDocs - Community Building App for Doctors\n\nForDocs is a community-building platform tailored for healthcare professionals, inspired by Reddit. It allows doctors to engage in discussions, share knowledge, and collaborate within dedicated medical communities. Built using **Spring Boot** with **MVC architecture**, ForDocs leverages **JSP** for the frontend and **PostgreSQL** for data storage.\n\n---\n\n## 🚀 Features\n\n### 👥 User Features\n#### **Registration and Login**\n- Secure user authentication and registration using **JWT tokens**.\n- Session management via **HttpSession** for logged-in users.\n\n#### **Profile Management**\n- View and update user profiles, including their posts and comments.\n\n#### **Community Features**\n- Create, join, and leave communities.\n- View community members.\n- Engage in discussions within communities.\n\n#### **Post \u0026 Comment System**\n- Create, update, and delete posts.\n- Add, update, and delete comments on posts.\n- Upvote or downvote posts.\n\n### 🔧 Admin Features\n- Manage **users, posts, and communities**.\n\n### 📌 Pagination \u0026 Sorting\n- Paginated views for posts and communities for enhanced user experience.\n\n### ⚠️ Error Handling\n- Custom error handling for **invalid operations** and **resource-not-found** scenarios.\n\n---\n\n## 🛠️ Technology Stack\n\n### **Backend**\n- **Spring Boot**\n  - RESTful API implementation\n  - Dependency injection for modularity\n  - Security configurations via **Spring Security**\n- **Hibernate**\n  - ORM framework for PostgreSQL database interaction\n\n### **Frontend**\n- **JSP (Java Server Pages)**\n  - Dynamic rendering of views\n\n### **Database**\n- **PostgreSQL**\n  - Relational database for storing **users, posts, communities, and comments**\n\n### **Security**\n- **JWT**\n  - Token-based authentication for secure access control\n\n---\n\n## Folder Structure\n\n```plaintext\n├── FinalProject\n│   ├── mvnw\n│   ├── mvnw.cmd\n│   ├── nb-configuration.xml\n│   ├── pom.xml\n│   ├── src\n│   │   ├── main\n│   │   │   ├── java\n│   │   │   │   └── com\n│   │   │   │       └── csye6220\n│   │   │   │           └── finalProject\n│   │   │   │               ├── FinalProjectApplication.java\n│   │   │   │               ├── config\n│   │   │   │               │   └── SecurityConfiguration.java\n│   │   │   │               ├── controller\n│   │   │   │               │   ├── AuthController.java\n│   │   │   │               │   ├── CommentController.java\n│   │   │   │               │   ├── CommunityController.java\n│   │   │   │               │   ├── HomeController.java\n│   │   │   │               │   ├── PostController.java\n│   │   │   │               │   ├── UserController.java\n│   │   │   │               │   └── VoteController.java\n│   │   │   │               ├── dao\n│   │   │   │               │   ├── CommentDAO.java\n│   │   │   │               │   ├── CommunityDAO.java\n│   │   │   │               │   ├── DAO.java\n│   │   │   │               │   ├── PostDAO.java\n│   │   │   │               │   ├── UserDAO.java\n│   │   │   │               │   ├── VoteDAO.java\n│   │   │   │               │   └── impl\n│   │   │   │               │       ├── CommentDAOImpl.java\n│   │   │   │               │       ├── CommunityDAOImpl.java\n│   │   │   │               │       ├── PostDAOImpl.java\n│   │   │   │               │       ├── UserDAOImpl.java\n│   │   │   │               │       └── VoteDAOImpl.java\n│   │   │   │               ├── dto\n│   │   │   │               │   ├── AuthResponse.java\n│   │   │   │               │   ├── CommentDto.java\n│   │   │   │               │   ├── LoginRequest.java\n│   │   │   │               │   ├── PostDto.java\n│   │   │   │               │   ├── RegisterRequest.java\n│   │   │   │               │   └── VoteDto.java\n│   │   │   │               ├── exception\n│   │   │   │               │   ├── GlobalExceptionHandler.java\n│   │   │   │               │   ├── ResourceNotFoundException.java\n│   │   │   │               │   └── ValidationException.java\n│   │   │   │               ├── model\n│   │   │   │               │   ├── Comment.java\n│   │   │   │               │   ├── Community.java\n│   │   │   │               │   ├── Post.java\n│   │   │   │               │   ├── User.java\n│   │   │   │               │   ├── Vote.java\n│   │   │   │               │   └── VoteType.java\n│   │   │   │               ├── security\n│   │   │   │               │   ├── JWTAuthenticationFilter.java\n│   │   │   │               │   ├── JwtAuthenticationEntryPoint.java\n│   │   │   │               │   ├── JwtProvider.java\n│   │   │   │               │   └── SecurityConstants.java\n│   │   │   │               └── service\n│   │   │   │                   ├── AuthService.java\n│   │   │   │                   ├── CommentService.java\n│   │   │   │                   ├── CommunityService.java\n│   │   │   │                   ├── PostService.java\n│   │   │   │                   ├── UserService.java\n│   │   │   │                   ├── VoteService.java\n│   │   │   │                   └── impl\n│   │   │   │                       ├── AuthServiceImpl.java\n│   │   │   │                       ├── CommentServiceImpl.java\n│   │   │   │                       ├── CommunityServiceImpl.java\n│   │   │   │                       ├── PostServiceImpl.java\n│   │   │   │                       ├── UserDetailsServiceImpl.java\n│   │   │   │                       ├── UserServiceImpl.java\n│   │   │   │                       └── VoteServiceImpl.java\n│   │   │   ├── resources\n│   │   │   │   ├── application.properties\n│   │   │   │   ├── hibernate.cfg.xml\n│   │   │   │   └── static\n│   │   │   └── webapp\n│   │   │       └── WEB-INF\n│   │   │           └── views\n│   │   │               ├── commList.jsp\n│   │   │               ├── community.jsp\n│   │   │               ├── createCommunity.jsp\n│   │   │               ├── createPost.jsp\n│   │   │               ├── fordocs.png\n│   │   │               ├── index.jsp\n│   │   │               ├── login.jsp\n│   │   │               ├── loginSuccess.jsp\n│   │   │               ├── membersOfComm.jsp\n│   │   │               ├── navbar.jsp\n│   │   │               ├── navbarStyle.css\n│   │   │               ├── postComponent.jsp\n│   │   │               ├── postSuccess.jsp\n│   │   │               ├── posts.jsp\n│   │   │               ├── postsbycomm.jsp\n│   │   │               ├── profile.jsp\n│   │   │               ├── registration.jsp\n│   │   │               ├── registrationSuccess.jsp\n│   │   │               ├── updatePassword.jsp\n│   │   │               ├── updateProfile.jsp\n│   │   │               ├── user-list.jsp\n│   │   │               └── userPosts.jsp\n│   │   └── test\n│   │       └── java\n│   │           └── com\n│   │               └── csye6220\n│   │                   └── finalProject\n│   │                       └── FinalProjectApplicationTests.java\n│   └── target\n│       ├── classes\n│       │   ├── application.properties\n│       │   ├── com\n│       │   │   └── csye6220\n│       │   │       └── finalProject\n│       │   │           ├── FinalProjectApplication.class\n│       │   │           ├── config\n│       │   │           │   └── SecurityConfiguration.class\n│       │   │           ├── controller\n│       │   │           │   ├── AuthController.class\n│       │   │           │   ├── CommentController.class\n│       │   │           │   ├── CommunityController.class\n│       │   │           │   ├── HomeController.class\n│       │   │           │   ├── PostController.class\n│       │   │           │   ├── UserController.class\n│       │   │           │   └── VoteController.class\n│       │   │           ├── dao\n│       │   │           │   ├── CommentDAO.class\n│       │   │           │   ├── CommunityDAO.class\n│       │   │           │   ├── DAO.class\n│       │   │           │   ├── PostDAO.class\n│       │   │           │   ├── UserDAO.class\n│       │   │           │   ├── VoteDAO.class\n│       │   │           │   └── impl\n│       │   │           │       ├── CommentDAOImpl.class\n│       │   │           │       ├── CommunityDAOImpl.class\n│       │   │           │       ├── PostDAOImpl.class\n│       │   │           │       ├── UserDAOImpl.class\n│       │   │           │       └── VoteDAOImpl.class\n│       │   │           ├── dto\n│       │   │           │   ├── AuthResponse.class\n│       │   │           │   ├── CommentDto.class\n│       │   │           │   ├── LoginRequest.class\n│       │   │           │   ├── PostDto.class\n│       │   │           │   ├── RegisterRequest.class\n│       │   │           │   └── VoteDto.class\n│       │   │           ├── exception\n│       │   │           │   ├── GlobalExceptionHandler.class\n│       │   │           │   ├── ResourceNotFoundException.class\n│       │   │           │   └── ValidationException.class\n│       │   │           ├── model\n│       │   │           │   ├── Comment.class\n│       │   │           │   ├── Community.class\n│       │   │           │   ├── Post.class\n│       │   │           │   ├── User.class\n│       │   │           │   ├── Vote.class\n│       │   │           │   └── VoteType.class\n│       │   │           ├── security\n│       │   │           │   ├── JWTAuthenticationFilter.class\n│       │   │           │   ├── JwtAuthenticationEntryPoint.class\n│       │   │           │   ├── JwtProvider.class\n│       │   │           │   └── SecurityConstants.class\n│       │   │           └── service\n│       │   │               ├── AuthService.class\n│       │   │               ├── CommentService.class\n│       │   │               ├── CommunityService.class\n│       │   │               ├── PostService.class\n│       │   │               ├── UserService.class\n│       │   │               ├── VoteService.class\n│       │   │               └── impl\n│       │   │                   ├── AuthServiceImpl.class\n│       │   │                   ├── CommentServiceImpl.class\n│       │   │                   ├── CommunityServiceImpl.class\n│       │   │                   ├── PostServiceImpl.class\n│       │   │                   ├── UserDetailsServiceImpl.class\n│       │   │                   ├── UserServiceImpl.class\n│       │   │                   └── VoteServiceImpl.class\n│       │   └── hibernate.cfg.xml\n│       ├── generated-sources\n│       │   └── annotations\n│       └── test-classes\n│           └── com\n│               └── csye6220\n│                   └── finalProject\n│                       └── FinalProjectApplicationTests.class\n└── README.md\n```\n\n\n---\n\n## 🏛️ System Architecture\n\nForDocs follows the **Model-View-Controller (MVC)** architecture:\n\n- **Model:** Represents application data and database entities using **Hibernate \u0026 JPA annotations**.\n- **View:** JSP files dynamically render content based on user roles and interactions.\n- **Controller:** Handles HTTP requests, processes data, and delegates logic to services.\n\n---\n\n## 📌 Key Components\n\n### **Controllers**\n- `AuthController`: Manages user authentication, login, signup, and logout.\n- `UserController`: Handles user profiles, updates, and community memberships.\n- `PostController`: Manages post creation, updates, deletions, and fetching posts by user/community.\n- `CommentController`: Manages comments, including creation, updates, and deletions.\n- `CommunityController`: Handles community creation, member management, and community retrieval.\n- `VoteController`: Manages upvote and downvote functionality.\n\n### **Services**\n- `AuthService`: Handles authentication and **JWT token** generation.\n- `UserService`: Implements user-specific operations, including profile and password management.\n- `PostService`: Encapsulates logic for **creating, updating, and retrieving posts**.\n- `CommentService`: Manages comment-related operations.\n- `CommunityService`: Implements community-specific operations such as **member management**.\n- `VoteService`: Processes upvotes and downvotes.\n\n---\n\n## 🚀 Getting Started\n\n### Prerequisites\n- **Java 17+**\n- **Spring Boot**\n- **PostgreSQL**\n- **Maven**\n\n### Installation\n1. Clone the repository:\n   ```sh\n   git clone https://github.com/akhilk2802/ForDocs.git\n   cd ForDocs\n   ```\n2. Configure the database in `application.properties`:\n   ```properties\n   spring.datasource.url=jdbc:postgresql://localhost:5432/fordocs_db\n   spring.datasource.username=your_db_user\n   spring.datasource.password=your_db_password\n   ```\n3. Build and run the project:\n   ```sh\n   mvn clean install\n   mvn spring-boot:run\n   ```\n\n### API Documentation\n- **Base URL:** `http://localhost:8080/api/v1/`\n- **Swagger Documentation:** `http://localhost:8080/swagger-ui.html`\n\n---\n\n## 👨‍💻 Contributing\nContributions are welcome! Follow these steps:\n1. Fork the repository.\n2. Create a feature branch (`git checkout -b feature-name`).\n3. Commit your changes (`git commit -m 'Add feature'`).\n4. Push to the branch (`git push origin feature-name`).\n5. Create a pull request.\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakhilk2802%2Ffordocs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakhilk2802%2Ffordocs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakhilk2802%2Ffordocs/lists"}