This app helps you track your stock investments with real-time profit and loss tables, letting you see how your portfolio performs instantly. You can register with your name and email, then log in to manage your holdings.
The project was inspired by my interest in the FIRE (Financial Independence, Retire Early) movement and a desire for a clean, simple tool to track investments.
- User registration & login
- Secure password hashing
- Real-time P/L tracking with Polygon.io API
- Livewire-powered dynamic UI
- SQLite for development, PostgreSQL for production
- Fully Dockerized for deployment on Render
- Clean UI with Tailwind CSS
- Fast build system using Vite
- Backend Framework: Laravel 12 (PHP 8.2)
- Frontend: Blade, Tailwind CSS, Livewire
- Build Tool: Vite
- Database: SQLite (dev), PostgreSQL (prod)
- Deployment: Docker + Render
- Stock Prices: Polygon.io API
🟢 Live App:
https://finance-portfolio-pnj2.onrender.com
All routes are protected and require a logged-in user.
- Register at:
/register - Log in at:
/login - Once authenticated, users can manage their stock holdings.
These are the main routes available in the Finance Portfolio Tracker app.
All routes except the homepage and login/register require authentication.
| Method | Route | Description |
|---|---|---|
| GET | /dashboard |
User dashboard overview |
| Method | Route | Description |
|---|---|---|
| GET | /settings/profile |
Edit user profile |
| GET | /settings/password |
Update user password |
| GET | /settings/appearance |
Switch light/dark theme |
| Method | Route | Description |
|---|---|---|
| GET | /holdings |
List all holdings |
| GET | /holdings/create |
Show form to add holding |
| POST | /holdings |
Store new holding |
| GET | /holdings/{id} |
View a specific holding |
| PUT | /holdings/{id} |
Update a holding |
| DELETE | /holdings/{id} |
Delete a holding |
| Method | Route | Description |
|---|---|---|
| GET | /savings-accounts |
View savings accounts |
| Method | Route | Description |
|---|---|---|
| GET | /search-tickers |
Client-side ticker autocomplete |
| GET | /polygon/search |
Server-side ticker search |
| GET | /polygon/prev-close/{ticker} |
Get previous close price (rate-limited) |
Handled by Laravel Breeze (auth.php):
| Method | Route | Description |
|---|---|---|
| GET/POST | /login, /register |
Login and sign up |
| POST | /logout |
Log out of app |
| GET | /forgot-password |
Password reset |
- Register an account
- Add new stock holdings (ticker, quantity, price, etc.)
- View real-time updates on your investments
- Analyze profit/loss per instrument
# Local dev Setup
```bash
# 1. Clone the repo
git clone https://github.com/Achra-f/Finance-Portfolio.git
cd Finance-Portfolio
# 2. Install PHP dependencies
composer install
# 3. Install Node dependencies and build assets
npm install
npm run dev
# 4. Setup environment
cp .env.example .env
php artisan key:generate
# 5. Use SQLite for dev (or configure PostgreSQL)
touch database/database.sqlite
php artisan migrate
# 6. Start the server
composer run dev