Jisr (جسر) is a healthcare platform designed to connect newly diagnosed cancer patients with healthcare professionals. It offers a comprehensive ecosystem to support patients' medical and emotional needs through a streamlined, multilingual (English and Arabic) platform.
- User roles: Patient, Caregiver, Healthcare Provider, Admin.
- JWT-based authentication and role-based access control.
- Multilingual support (English and Arabic).
- OTP-based user verification for secure registration and login.
- Appointment scheduling with healthcare providers.
- Admin-controlled settings for registration and file uploads.
- Patient and healthcare provider profile management.
- Backend: Spring Boot 3.3.5
- Frontend: (Planned) NextJs
- Database: PostgreSQL
- Authentication: JWT-based authentication & authorization
- Messaging: Email notifications (via SMTP) and SMS OTP for verification
- Orchestration: Docker, Kubernetes (future plan)
- Cloud: Any public cloud AWS, GCP, Azure (future plan)
- Java: JDK 21 or higher
- Maven: 3.8.5 or higher
- Database: PostgreSQL 17 or higher
- Cache: Redis
- Postman: For API testing
- Git: Version control
application.properties
: General application configuration.application-secret.properties
: Contains sensitive credentials (excluded from version control).
- Authentication: Secure login via email/phone and password.
- Encryption: Passwords hashed with BCrypt.
- Validation: Strong input validation to prevent injection attacks.
-
Clone the repository:
git clone https://github.com/altafjava/jisr.git cd jisr
-
Configure the Database and Environment
- Install and start a PostgreSQL server.
- Create a database named
jisr
:CREATE DATABASE jisr;
-
Redis Setup:
-
Redis is required for caching and session management. Follow the instructions below based on your operating system:
-
Install Redis:
For Ubuntu:
sudo apt update sudo apt install redis
For MacOS:
brew install redis
-
Start the Redis server:
sudo service redis-server start
-
Verify that Redis is running:
redis-cli ping
Expected response:
PONG
- Redis is not natively supported on Windows, but you can use Windows Subsystem for Linux (WSL) to run Redis. Follow these steps:
-
Install WSL:
- Open PowerShell as Administrator and run:
wsl --install
- Restart your machine if prompted.
- Open PowerShell as Administrator and run:
-
Install Redis on WSL:
- Launch the WSL terminal (Ubuntu is recommended as the default distribution).
- Run the commands for Ubuntu mentioned above to install and start Redis.
-
Connect to Redis:
- Once Redis is running in WSL, it will be accessible to your application as localhost on the default port
6379
.
- Once Redis is running in WSL, it will be accessible to your application as localhost on the default port
-
Check Redis status:
redis-cli ping
Expected response:
PONG
-
Optional: Customize Redis configuration by editing the
redis.conf
file (e.g., change the default port or enable persistence).
-
-
-
Install Apache Kafka with the default port
9092
for event-driven messaging. -
Update Configuration:
-
Create
application-secret.properties
file insidesrc/main/resources
directory and update the following settings:# Email configuration [email protected] spring.mail.password=<Google App Password> # JWT configuration jwt.secret=<Base64 encoded> # Admin default password (encrypted) ADMIN_PASSWORD_HASH=<Bcrypt encrypted password>
-
-
Install dependencies and build the project:
mvn clean install
-
Run the application:
mvn spring-boot:run
-
Access the application:
- API documentation: http://localhost:8080/swagger-ui.html (if Swagger is configured).
- Base URL: http://localhost:8080
- Ensure
PostgreSQL
andRedis
servers are running before starting the application. - Use strong values for
jwt.secret
- Generate
ADMIN_PASSWORD_HASH
using abcrypt
password generator.
- Integrate frontend using React or Angular.
- Add support for file uploads (e.g., lab reports, medical records).
- Expand appointment functionality with calendar integration.
- Introduce AI-driven recommendations for diet and treatment plans.
-
Fork the repository.
-
Create a feature branch:
git checkout -b feature-name
-
Commit your changes:
git commit -m "Add feature description"
-
Push the branch:
git push origin feature-name
-
Create a pull request.