A desktop application built with Next.js frontend, Spring Boot backend, and Tauri for desktop deployment.
- Backend: Spring Boot (Kotlin) running on port 8080
- Frontend: Next.js (React + TypeScript) running on port 3000
- Desktop App: Tauri wrapper around the Next.js frontend
- Java 21+
- Node.js 24+
- Rust (for Tauri)
./start-dev.shThis will start both the backend and frontend. Access:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8080
- Health check: http://localhost:8080/api/health
./start-backend.sh
# OR manually:
cd backend && ./gradlew bootRun./start-frontend.sh
# OR manually:
cd frontend && npm install && npm run dev./start-tauri.sh
# OR manually:
cd frontend && npm run tauri:dev- Start the development environment:
./start-dev.sh - Make changes to your code
- Both frontend and backend support hot reload
- Test the desktop app with:
./start-tauri.sh
GET /api/health- Health checkGET /api/hello- Test endpoint
The backend is configured to accept requests from:
- http://localhost:3000 (Next.js dev server)
- tauri://localhost (Tauri app)
- http://localhost:1420 (Tauri dev server)
cd backend && ./gradlew buildcd frontend && npm run buildcd frontend && npm run tauri:buildcd frontend && npm testcd backend && ./gradlew testcd frontend/src-tauri && cargo test --libE2E tests are located in the e2e/ directory at the project root and use Playwright with Tauri support.
- All dependencies installed (see Prerequisites above)
- Frontend dependencies:
cd frontend && npm install - E2E dependencies:
cd e2e && npm install
-
Install E2E dependencies (first time only):
cd e2e && npm install
-
Run all E2E tests:
cd e2e && npm test
This will automatically launch the Tauri app and run the tests.
-
Run E2E tests with UI mode (interactive):
cd e2e && npm run test:ui
-
Run E2E tests in debug mode:
cd e2e && npm run test:debug
-
Run E2E tests in headed mode (see browser):
cd e2e && npm run test:headed
e2e/tauri/- Tauri desktop app E2E testse2e/api/- Backend API E2E tests (future)e2e/full-stack/- Full stack integration tests (future)
Note: Currently, E2E tests contain skeleton test scenarios. Full implementation will be added as features are developed.
- Backend: Spring Boot 3.5, Kotlin, H2 Database
- Frontend: Next.js 15, React 19, TypeScript, Tailwind CSS
- Desktop: Tauri 2.5
- Build Tools: Gradle (backend), npm (frontend)
This project uses environment variables for sensitive configuration. Never commit .env files to version control.
- Copy
backend/.env.exampletobackend/.env - Update the values with your actual configuration:
DB_URL=jdbc:h2:mem:testdb DB_USERNAME=sa DB_PASSWORD=your_secure_password_here
Important for Production:
- Use strong, unique passwords
- Use a proper production database (PostgreSQL, MySQL, etc.) instead of H2
- Disable H2 console in production: set
spring.h2.console.enabled=falseinapplication.properties - Never use default credentials (
sa/password) in production
- Copy
frontend/src-tauri/migration/.env.exampletofrontend/src-tauri/migration/.env - Update the database path if needed:
DATABASE_URL=sqlite://dev.db?mode=rwc
- Never commit secrets: All
.envfiles are in.gitignore. Double-check before committing. - Use environment variables: All sensitive configuration should use environment variables, not hardcoded values.
- Review default values: The codebase contains placeholder/default values for development. Always override these in production.
- Database security:
- Use strong passwords for database connections
- Restrict database access to necessary IPs/networks
- Use connection encryption in production
- API security:
- Implement proper authentication and authorization
- Use HTTPS in production
- Validate and sanitize all user inputs
The codebase contains placeholder values (e.g., "test_hash", default "password") that are clearly marked for MVP/development purposes. These are not production secrets and should be replaced with proper implementations before production deployment.