Skip to content

ryanmuenker/Java-Stock-Visualiser

Repository files navigation

Java-Stock-Visualiser

A JavaFX-based stock portfolio management application with PostgreSQL/Supabase backend.

🗄️ Database Setup (Supabase)

This project uses PostgreSQL via Supabase for cloud database hosting.

Prerequisites

  • Java 21
  • Maven (included via wrapper)
  • Supabase account (free tier works)

🚀 Build and Run

Compile

./mvnw clean compile

Run Application

./mvnw clean javafx:run

Test Login

  • Admin: admin, admin123
  • Demo Trader: demo, demo123

🐛 Troubleshooting

"Unable to find db.properties"

  • Cause: File doesn't exist or is in wrong location
  • Fix: Ensure file exists at src/main/resources/db.properties

"Connection refused" or "Connection timeout"

  • Cause: Wrong connection details or network issue
  • Fix:
    • Verify your Supabase project is active (not paused)
    • Check connection string has db. prefix: db.YOUR_REF.supabase.co
    • Ensure db.ssl=true is set
    • Check your firewall/network settings

"Password authentication failed"

  • Cause: Wrong password in db.properties
  • Fix: Reset password in Supabase Dashboard → Settings → Database

"BUILD SUCCESS" but app won't start

  • Cause: Database connection issue during initialization
  • Fix: Check console output for error messages starting with "Error initializing database"

📦 Project Structure

src/main/java/com/example/stock_visualiser/
├── dao/                    # Data Access Objects (interfaces)
│   └── impl/              # DAO implementations
├── database/              # DatabaseManager & TransactionManager
├── model/                 # Domain models (User, Stock, Portfolio, etc.)
├── service/               # Business logic (AuthenticationService)
├── controller/            # JavaFX controllers
├── util/                  # Utilities (SceneManager)
└── view/                  # FXML files (in resources)

🔑 Key Features Implemented

  • ✅ User authentication with BCrypt password hashing
  • ✅ Role-based access (Admin/Trader)
  • ✅ DAO pattern for clean database abstraction
  • ✅ HikariCP connection pooling
  • ✅ Transaction management
  • ✅ PostgreSQL/Supabase cloud database

📚 Tech Stack

  • Frontend: JavaFX 21
  • Backend: Java 21
  • Database: PostgreSQL (Supabase)
  • Build Tool: Maven
  • Connection Pool: HikariCP
  • Security: BCrypt password hashing

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5