PulsePoint is a modern web application built with Spring Boot and React. It provides a secure and scalable platform with RESTful API architecture.
- Features
- Tech Stack
- Getting Started
- Project Structure
- Frontend
- Backend
- API Documentation
- Environment Variables
- Dockerization
- Contributing
- License
- User authentication and authorization with JWT
- RESTful API endpoints with Spring Data REST
- Secure email service integration
- PostgreSQL database integration
- Redis integration
- Responsive web interface
- Protected routes and API endpoints
- React.js (v19.1.0)
- React Router DOM (v7.6.2)
- Axios for API integration
- Testing utilities (Jest, React Testing Library)
- Spring Boot (v3.4.5)
- Java 21
- Spring Security
- Spring Data JPA
- PostgreSQL
- JWT Authentication
- Spring Mail
- Redis
- Kafka
- Lombok
- Maven
- Java 21 or higher
- Node.js (v16.x or higher)
- npm (v8.x or higher)
- PostgreSQL (v13 or higher)
- Maven
- Docker & Docker Compose
- Clone the repository
git clone https://github.com/yourusername/pulsepoint.git
cd pulsepoint- Backend Setup
cd backend
mvn clean install- Frontend Setup
cd frontend
npm install- Set up environment variables
Backend (application.properties):
spring.datasource.url=jdbc:postgresql://localhost:5432/pulsepoint
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.jpa.hibernate.ddl-auto=update
jwt.secret=your_jwt_secret
spring.mail.host=smtp.your-email-provider.com
spring.mail.port=587
spring.mail.username=your_email
spring.mail.password=your_email_passwordFrontend (.env):
REACT_APP_API_URL=http://localhost:8080
- Start the applications
Backend:
cd backend
mvn spring-boot:runFrontend:
cd frontend
npm startpulsepoint/
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ ├── pages/
│ │ ├── services/
│ │ ├── styles/
│ │ ├── utils/
│ │ ├── App.js
│ │ └── index.js
│ ├── package.json
│ └── README.md
├── backend/
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/
│ │ │ └── resources/
│ │ └── test/
│ ├── pom.xml
│ └── README.md
└── README.md
The frontend is a React-based single-page application with:
- Component-based architecture
- React Router for navigation
- Axios for API integration
- Jest and React Testing Library for testing
The backend is built with Spring Boot and provides:
- RESTful API endpoints
- JWT-based authentication
- PostgreSQL database integration
- Email service integration
- Redis integration
- Kafka consumers
- Spring Security for endpoint protection
- JPA for database operations
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=
jwt.secret=
spring.mail.host=
spring.mail.port=
spring.mail.username=
spring.mail.password=REACT_APP_API_URL=
This project is fully dockerized. You can run the entire stack (frontend, backend, PostgreSQL, Redis) using Docker Compose.
- Frontend Dockerfile should use
EXPOSE 80(not 8090). Nginx inside the container listens on port 80 by default. - docker-compose.yml should map frontend service as
8090:80so you access the UI at http://localhost:8090. - Backend is mapped as
8080:8080. - PostgreSQL is mapped as
5433:5432(host:container). - Redis is mapped as
6379:6379.
- Make sure Docker and Docker Compose are installed.
- From the project root, run:
docker-compose up --build
- Access the services:
- Frontend (UI): http://localhost:8090
- Backend (API): http://localhost:8080
- PostgreSQL: Host port 5433 (for database tools)
- Redis: Host port 6379