A full-stack web application built with Spring Boot and Nextjs, designed to facilitate collaboration and project management.
- Overview
- Features
- Tech Stack
- Project Structure
- Prerequisites
- Installation
- Configuration
- Running the Application
- API Endpoints
- Development
- Contributing
- License
BrainBridge is a collaborative platform that enables users to manage projects, share ideas, and track analytics. The application follows a modern microservices architecture with a RESTful backend API and a responsive Nextjs frontend.
- User Management: User registration, authentication, and profile management
- Project Management: Create, update, and manage projects
- Comments System: Add and manage comments on projects
- Analytics: Track and analyze project metrics and user engagement
- File Upload: Support for file uploads via Cloudinary integration
- Email Notifications: Email functionality for user communications
- JWT Authentication: Secure authentication using JSON Web Tokens
- Java 21: Programming language
- Spring Boot 4.0.0: Application framework
- Maven: Build tool and dependency management
- JWT: Authentication and authorization
- Spring Mail: Email functionality
- Cloudinary: Cloud-based image and file management
- Nextjs 19.2.0: UI library
- TypeScript 5.9.3: Type-safe JavaScript
- Vite 7.2.4: Build tool and development server
- ESLint: Code linting
BrainBridge/
├── Backend/
│ └── brainbridge/
│ └── brainbridge/
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/com/learn/brainbridge/
│ │ │ │ ├── controllers/ # REST API controllers
│ │ │ │ ├── entity/ # JPA entities
│ │ │ │ ├── dtos/ # Data Transfer Objects
│ │ │ │ ├── repository/ # Data access layer
│ │ │ │ ├── service/ # Business logic layer
│ │ │ │ ├── config/ # Configuration classes
│ │ │ │ ├── Exception/ # Exception handling
│ │ │ │ ├── Filters/ # Request/Response filters
│ │ │ │ ├── util/ # Utility classes
│ │ │ │ └── scheduler/ # Scheduled tasks
│ │ │ └── resources/
│ │ │ └── application.properties
│ │ └── test/ # Test files
│ └── pom.xml
│
└── Frontend/
└── BrainBridge-Frontend/
├── src/
│ ├── components/ # React components
│ ├── pages/ # Page components
│ ├── store/ # State management
│ ├── utils/ # Utility functions
│ ├── App.tsx
│ └── main.tsx
├── package.json
└── vite.config.ts
Before you begin, ensure you have the following installed:
- Java 21 or higher
- Maven 3.6+
- Node.js 18+ and npm (or yarn)
- Git
- Navigate to the backend directory:
cd Backend/brainbridge/brainbridge- Install dependencies using Maven:
mvn clean install- Navigate to the frontend directory:
cd Frontend/BrainBridge-Frontend- Install dependencies:
npm installEdit Backend/brainbridge/brainbridge/src/main/resources/application.properties:
-
Email Configuration:
- Set
spring.mail.usernameandspring.mail.password - Or use environment variables:
MAIL_USERNAMEandMAIL_PASSWORD
- Set
-
Cloudinary Configuration:
- Set
cloudinary.cloud-name - Set
cloudinary.api-key - Set
cloudinary.api-secret
- Set
-
JWT Secret:
- Set
jwt.secret.keyor use environment variableJWT_SECRET
- Set
-
Application URLs:
- Configure
app.frontend.url - Configure
app.base_url - Configure
app.frontend.admin.url
- Configure
Create a .env file or set the following environment variables:
MAIL_USERNAME=your-email@gmail.com
MAIL_PASSWORD=your-app-password
JWT_SECRET=your-secret-key
CLOUDINARY_CLOUD_NAME=your-cloud-name
CLOUDINARY_API_KEY=your-api-key
CLOUDINARY_API_SECRET=your-api-secret- Navigate to the backend directory:
cd Backend/brainbridge/brainbridge- Run the Spring Boot application:
mvn spring-boot:runOr use the Maven wrapper:
./mvnw spring-boot:runThe backend will start on http://localhost:8080 (default Spring Boot port).
- Navigate to the frontend directory:
cd Frontend/BrainBridge-Frontend- Start the development server:
npm run devThe frontend will start on http://localhost:5173 (default Vite port).
The application includes the following main controllers:
- UserController: User management endpoints
- ProjectController: Project management endpoints
- CommentController: Comment management endpoints
- AnalyticsController: Analytics and metrics endpoints
Note: Detailed API documentation will be available once the controllers are fully implemented.
- The backend uses Spring Boot with Java 21
- Controllers are located in
controllers/package - Entities are defined in
entity/package - Services contain business logic in
service/andServiceImpl/packages - DTOs are used for data transfer in
dtos/package
- The frontend uses React with TypeScript
- Components are organized in
components/directory - Pages are in
pages/directory - State management is handled in
store/directory - Utility functions are in
utils/directory
Backend:
mvn clean packageFrontend:
npm run build- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is currently in development. License information will be added upon completion.
For questions or support, please open an issue in the repository.
Note: This project is currently in active development. Some features may be incomplete or subject to change.