Portfolio Tracker
Portfolio Tracker
Deployments:
• Frontend : Render,
• Backend : Railway,
• Database : Railway.
Users Table :
CREATE TABLE users (
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
id BIGSERIAL PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
name VARCHAR(255) NOT NULL,
name VARCHAR(255) NOT NULL,
provider VARCHAR(255) NOT NULL,
provider VARCHAR(255) NOT NULL,
roles VARCHAR(255) NOT NULL
roles VARCHAR(255) NOT NULL
);
CREATE TABLETable
Users Roles user_roles
: (
user_id BIGINT NOT NULL,
CREATE TABLE user_roles (
roles VARCHAR(255) NOT NULL,
user_id BIGINT NOT NULL,
PRIMARY KEY (user_id, roles),
roles VARCHAR(255) NOT NULL,
FOREIGN KEY (user_id) REFERENCES us
PRIMARY KEY (user_id, roles),
);
FOREIGN KEY (user_id) REFERENCES users(id)
);
id BIGSERIAL
count PRIMARY KEY,
INT NOT NULL,
user_id BIGINT
date DATE NOTNOT NULL,
NULL,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
count INT NOT NULL,
);
Portfolios Table :
Portfolios Table :
CREATE TABLE portfolios (
CREATE TABLE portfolios (
id BIGSERIAL PRIMARY KEY,
id BIGSERIAL
user_id BIGINT PRIMARY KEY,
NOT NULL,
user_idVARCHAR(255)
symbol BIGINT NOT NULL,
NOT NULL,
name VARCHAR(255),
symbol VARCHAR(255) NOT NULL,
quantity INT NOT NULL,
name VARCHAR(255),
average_price DOUBLE PRECISION NOT NULL,
quantity INT NOT NULL,
current_price DOUBLE PRECISION NOT NULL,
average_price DOUBLE PRECISION NOT NULL,
day_change_percent DOUBLE PRECISION NOT NULL,
current_price DOUBLE PRECISION NOT NULL,
high_price DOUBLE PRECISION NOT NULL,
day_change_percent
low_price DOUBLENOT
DOUBLE PRECISION PRECISION
NULL, NOT NULL,
open_price
high_priceDOUBLE
DOUBLE PRECISION
PRECISION NOT
NOT NULL,
NULL,
previous_close DOUBLE
low_price DOUBLE PRECISION
PRECISION NOTNOT NULL,
NULL,
total_value DOUBLE PRECISION NOT NULL,
open_price DOUBLE PRECISION NOT NULL,
purchase_date TIMESTAMPTZ NOT NULL,
previous_close DOUBLE PRECISION NOT NULL,
last_updated TIMESTAMPTZ NOT NULL,
total_value DOUBLE PRECISION NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
); purchase_date TIMESTAMPTZ NOT NULL,
last_updated TIMESTAMPTZ NOT NULL,
);
Transactions Table :
Transactions Table :
CREATE TABLE transactions (
CREATE TABLE transactions (
id BIGSERIAL PRIMARY KEY,
id BIGSERIAL
user_id BIGINT PRIMARY KEY,
NOT NULL,
symbol
user_idVARCHAR(255) NOT NULL,
BIGINT NOT NULL,
type VARCHAR(50)
symbol NOT NULL,
VARCHAR(255) NOT NULL,
quantity INT NOT NULL,
type VARCHAR(50) NOT NULL,
price DOUBLE PRECISION NOT NULL,
quantity INT NOT NULL,
total_amount DOUBLE PRECISION NOT NULL,
price VARCHAR(255)
status DOUBLE PRECISION NOT NULL,
NOT NULL,
date TIMESTAMPTZ
total_amount NOT NULL,
DOUBLE PRECISION NOT NULL,
FOREIGN KEY (user_id) REFERENCES
status VARCHAR(255) NOT NULL, users(id) ON DELETE CASCADE
);
date TIMESTAMPTZ NOT NULL,
);
Prerequisites :
• Node.js (v18 or higher)
• npm (package manager)
• Java JDK (v17 or higher for Spring Boot)
• PostgreSQL (v15 or higher) – pgAdmin 4
• IDEs:
o VS Code (frontend)
o IntelliJ IDEA (backend)
Open VS Code
3. spring.datasource.url=jdbc:postgresql://localhost:5432/capxdb
4. spring.datasource.username=root
5. spring.datasource.password=qwerty
Note : Make sure that all dependencies in pom file and package. json
are installed properly
Step 4: Set Up the Database
1. Open your PostgreSQL client or pgAdmin 4 and create a new database:
2. CREATE DATABASE capxdb;
3. Execute SQL scripts to initialize the database schema (provided in the
"Database Tables" section).
6. Troubleshooting
• Frontend not running:
Ensure all dependencies are installed by running npm install in the
frontend directory.
• For Command line interface Use : PowerShell
• Backend not connecting to the database:
Verify the credentials in the application.properties file.
• Port conflicts:
Change the ports in vite.config.ts (frontend) or application.properties
(backend).
+91 9080970408
[email protected]