A full-stack web application that enables neighbors to share, borrow, lend, and donate items within their community. Built with Next.js frontend and Spring Boot backend.
- Item Management: Add, view, and manage items you want to share
- Request System: Request items from neighbors or approve/reject incoming requests
- Real-time Chat: Communicate with other users about item requests
- User Authentication: Secure login and registration system
- Dashboard: Personal dashboard to manage your items and requests
- Borrow: Items you can borrow from others
- Lend: Items you're willing to lend to others
- Donate: Items you want to give away
- My Requests: Track requests you've made to others
- Requests Received: Manage requests from other users
- Status Updates: Approve, reject, or track request status
- Real-time Notifications: Stay updated on request changes
- Framework: Next.js 14.2.16
- Language: TypeScript
- Styling: Tailwind CSS
- State Management: Zustand
- UI Components: Radix UI + Custom components
- Forms: React Hook Form + Zod validation
- Real-time: STOMP WebSocket client
- HTTP Client: Axios
- Notifications: React Hot Toast
- Framework: Spring Boot 3.x
- Language: Java 17+
- Database: MySQL
- ORM: JPA/Hibernate
- Security: Spring Security + JWT
- WebSocket: STOMP messaging
- Validation: Jakarta Validation
- Documentation: OpenAPI/Swagger (planned)
helpboard/
โโโ helpboard-frontend/ # Next.js frontend
โ โโโ app/ # App router pages
โ โ โโโ dashboard/ # User dashboard
โ โ โโโ items/[itemId]/ # Item detail pages
โ โ โโโ chat/[requestId]/ # Chat pages
โ โ โโโ login/ # Authentication pages
โ โ โโโ register/
โ โโโ components/ # Reusable components
โ โ โโโ forms/ # Form components
โ โ โโโ ui/ # UI component library
โ โ โโโ ...
โ โโโ lib/ # Utilities and API client
โ โโโ store/ # Zustand state management
โ โโโ styles/ # Global styles
โโโ helpboard-backend/ # Spring Boot backend
โ โโโ src/main/java/
โ โ โโโ com/helpboard/backend/
โ โ โโโ config/ # Configuration classes
โ โ โโโ controller/ # REST controllers
โ โ โโโ dto/ # Data Transfer Objects
โ โ โโโ model/ # JPA entities
โ โ โโโ repository/ # Data repositories
โ โ โโโ service/ # Business logic
โ โ โโโ util/ # Utility classes
โ โโโ src/main/resources/
โ โโโ application.properties
โโโ README.md
- Node.js 18+ and npm/yarn/pnpm
- Java 17+
- MySQL 8.0+
- Maven 3.6+
-
Clone the repository
git clone <repository-url> cd helpboard
-
Backend Setup
cd helpboard-backend # Create MySQL database mysql -u root -p CREATE DATABASE helpboarddb; # Update application.properties with your database credentials # Edit: src/main/resources/application.properties # Run the backend mvn spring-boot:run
Backend will be available at
http://localhost:8080 -
Frontend Setup
cd helpboard-frontend # Install dependencies npm install # or yarn install # or pnpm install # Start development server npm run dev # or yarn dev # or pnpm dev
Frontend will be available at
http://localhost:3000
Update helpboard-backend/src/main/resources/application.properties:
# Database Configuration
spring.datasource.url=jdbc:mysql://localhost:3306/helpboarddb?useSSL=false&serverTimezone=UTC
spring.datasource.username=your_username
spring.datasource.password=your_password
# JWT Configuration
jwt.secret=your-super-secret-jwt-key-replace-this-in-prod-with-a-strong-random-string-at-least-256bit
jwt.expirationMs=3600000
# Server Port
server.port=8080Update helpboard-frontend/lib/api.ts if needed:
const API_BASE_URL = "http://localhost:8080" // Backend URL- Register/Login: Create an account or sign in
- Add Items: Use the dashboard to add items you want to share
- Browse Items: View available items from other users
- Make Requests: Request items you're interested in
- Manage Requests: Approve/reject requests for your items
- Chat: Communicate with other users about requests
Authentication
POST /auth/login- User loginPOST /auth/register- User registration
Items
GET /items- Get all itemsPOST /items- Create new itemGET /items/{id}- Get item by IDPUT /items/{id}- Update itemDELETE /items/{id}- Delete item
Requests
POST /items/{itemId}/request- Create request for itemGET /users/{userId}/requests- Get user requestsPATCH /requests/{id}/status- Update request status
Chat
GET /requests/{id}/messages- Get chat messagesPOST /requests/{id}/messages- Send message
/topic/requests/{requestId}- Chat messages/app/requests/{requestId}/send- Send message
# Backend tests
cd helpboard-backend
mvn test
# Frontend tests (if configured)
cd helpboard-frontend
npm test# Backend
cd helpboard-backend
mvn clean package
java -jar target/helpboard-backend-*.jar
# Frontend
cd helpboard-frontend
npm run build
npm start- Frontend: ESLint + Prettier (configured)
- Backend: Follow Spring Boot conventions
- Git: Conventional commits recommended
- User: User accounts and profiles
- Item: Items available for sharing
- Request: Item requests between users
- Message: Chat messages for requests
- User โ Items (One-to-Many)
- User โ Requests (One-to-Many as requester)
- Item โ Requests (One-to-Many)
- Request โ Messages (One-to-Many)
- JWT Authentication: Secure token-based authentication
- Password Hashing: BCrypt password encryption
- CORS Configuration: Cross-origin request handling
- Input Validation: Server-side validation for all inputs
- SQL Injection Protection: JPA/Hibernate parameterized queries
- Build the JAR file:
mvn clean package - Deploy to your preferred Java hosting platform
- Configure environment variables for database and JWT secret
- Set up MySQL database
- Build the application:
npm run build - Deploy to Vercel, Netlify, or your preferred hosting platform
- Configure environment variables for API endpoints
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- WebSocket connection may need reconnection logic
- Image upload functionality not yet implemented
- Email notifications not configured
- Search and filtering for items needs enhancement
- Mobile app (React Native)
- Push notifications
- Image upload and management
- Advanced search and filtering
- Rating and review system
- Location-based item discovery
- Email notifications
- Admin dashboard
- Analytics and reporting
If you have any questions or need help, please:
- Check the Issues page
- Create a new issue with detailed description
- Contact the development team
- Spring Boot team for the excellent framework
- Next.js team for the amazing React framework
- Radix UI for accessible component primitives
- Tailwind CSS for utility-first styling
- All contributors and testers (MY DEAREST AI COMPANIONS WHO HELPED ME DEBUG THE CODE FOR 5+ HOURS)
Happy Sharing! ๐






