Add comprehensive README.md
- Installation and setup instructions - Feature overview and screenshots section - Default credentials and security info - API documentation - Database schema details - Development and contribution guidelines 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
8a68a8bf86
commit
c5a314db74
196
README.md
Normal file
196
README.md
Normal file
@ -0,0 +1,196 @@
|
||||
# ETF Trade Tracker
|
||||
|
||||
A web-based application for tracking ETF trades with multi-user authentication, portfolio management, and performance analysis.
|
||||
|
||||
## Features
|
||||
|
||||
- 🔐 **Multi-user Authentication** - Secure login system with admin and regular user roles
|
||||
- 💼 **Portfolio Management** - Track your ETF positions, shares, and investments
|
||||
- 📊 **Trade History** - Complete record of all buy/sell transactions
|
||||
- 📈 **Gains/Losses Analysis** - Calculate performance with current market prices
|
||||
- 🎯 **Dashboard** - Overview of portfolio metrics and performance
|
||||
- 👥 **Admin Panel** - User management for administrators
|
||||
- 📱 **Responsive Design** - Works on desktop and mobile devices
|
||||
- 💾 **SQLite Database** - Local database storage with user data isolation
|
||||
|
||||
## Screenshots
|
||||
|
||||
### Dashboard
|
||||
Clean overview of your portfolio with key metrics and ETF breakdown.
|
||||
|
||||
### Trade Entry
|
||||
Simple form to add new ETF trades with date/time and currency support (EUR/USD).
|
||||
|
||||
### Gains/Losses
|
||||
Update current market prices to see real-time portfolio performance.
|
||||
|
||||
## Installation
|
||||
|
||||
### Prerequisites
|
||||
- Node.js (v14 or higher)
|
||||
- npm
|
||||
|
||||
### Setup
|
||||
|
||||
1. Clone the repository:
|
||||
```bash
|
||||
git clone git@teapot.hm.keyb.ie:kris/etf-trade-tracker.git
|
||||
cd etf-trade-tracker
|
||||
```
|
||||
|
||||
2. Install dependencies:
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
3. Start the server:
|
||||
```bash
|
||||
npm start
|
||||
```
|
||||
|
||||
4. Open your browser and navigate to:
|
||||
```
|
||||
http://localhost:3000
|
||||
```
|
||||
|
||||
## Default Credentials
|
||||
|
||||
When you first run the application, a default admin user is created:
|
||||
|
||||
- **Username:** `admin`
|
||||
- **Password:** `admin123`
|
||||
|
||||
⚠️ **Important:** Change the admin password after first login for security.
|
||||
|
||||
## Usage
|
||||
|
||||
### For Regular Users
|
||||
|
||||
1. **Login** - Use credentials provided by your administrator
|
||||
2. **Add Trades** - Navigate to "Add Trade" to record buy/sell transactions
|
||||
3. **View Portfolio** - Check your holdings and allocation in the Portfolio section
|
||||
4. **Track Performance** - Update current prices in Gains/Losses to see real-time performance
|
||||
5. **Export Data** - Export your trade history as JSON from Trade History
|
||||
|
||||
### For Administrators
|
||||
|
||||
1. **User Management** - Access Admin Panel from the sidebar to create/delete users
|
||||
2. **Create Users** - Add new users with regular or admin privileges
|
||||
3. **Monitor System** - View all users and their last login times
|
||||
|
||||
## API Endpoints
|
||||
|
||||
### Authentication
|
||||
- `POST /api/login` - User login
|
||||
- `POST /api/logout` - User logout
|
||||
- `GET /api/me` - Get current user info
|
||||
|
||||
### Trades
|
||||
- `GET /api/trades` - Get user's trades
|
||||
- `POST /api/trades` - Add new trade
|
||||
- `DELETE /api/trades/:id` - Delete specific trade
|
||||
- `DELETE /api/trades` - Clear all user trades
|
||||
|
||||
### Portfolio
|
||||
- `GET /api/portfolio-summary` - Get portfolio summary
|
||||
|
||||
### Admin (Admin Only)
|
||||
- `GET /api/admin/users` - List all users
|
||||
- `POST /api/admin/users` - Create new user
|
||||
- `DELETE /api/admin/users/:id` - Delete user
|
||||
|
||||
## Database Schema
|
||||
|
||||
### Users Table
|
||||
- `id` - Primary key
|
||||
- `username` - Unique username
|
||||
- `password_hash` - Bcrypt hashed password
|
||||
- `email` - Optional email address
|
||||
- `is_admin` - Boolean admin flag
|
||||
- `created_at` - Account creation timestamp
|
||||
- `last_login` - Last login timestamp
|
||||
|
||||
### Trades Table
|
||||
- `id` - Primary key
|
||||
- `user_id` - Foreign key to users table
|
||||
- `etf_symbol` - ETF ticker symbol
|
||||
- `trade_type` - 'buy' or 'sell'
|
||||
- `shares` - Number of shares
|
||||
- `price` - Price per share
|
||||
- `currency` - 'EUR' or 'USD'
|
||||
- `trade_datetime` - Date and time of trade
|
||||
- `fees` - Optional trading fees
|
||||
- `notes` - Optional trade notes
|
||||
- `total_value` - Calculated total value
|
||||
- `created_at` - Record creation timestamp
|
||||
|
||||
## Configuration
|
||||
|
||||
### Environment Variables
|
||||
|
||||
- `PORT` - Server port (default: 3000)
|
||||
|
||||
### Session Configuration
|
||||
|
||||
The application uses express-session with the following settings:
|
||||
- Session secret: `etf-tracker-secret-key` (change in production)
|
||||
- Session duration: 24 hours
|
||||
- Secure cookies: disabled (enable for HTTPS)
|
||||
|
||||
## Security Features
|
||||
|
||||
- Password hashing using bcrypt
|
||||
- Session-based authentication
|
||||
- User data isolation
|
||||
- Admin-only endpoints protection
|
||||
- SQL injection prevention with parameterized queries
|
||||
|
||||
## Development
|
||||
|
||||
### Project Structure
|
||||
```
|
||||
├── server.js # Express server and API routes
|
||||
├── index.html # Main HTML template
|
||||
├── script.js # Frontend JavaScript
|
||||
├── styles.css # CSS styles
|
||||
├── package.json # Dependencies and scripts
|
||||
├── .gitignore # Git ignore rules
|
||||
└── README.md # This file
|
||||
```
|
||||
|
||||
### Running in Development Mode
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
This uses nodemon for automatic server restart on file changes.
|
||||
|
||||
## Contributing
|
||||
|
||||
1. Fork the repository
|
||||
2. Create a feature branch
|
||||
3. Make your changes
|
||||
4. Test thoroughly
|
||||
5. Submit a pull request
|
||||
|
||||
## License
|
||||
|
||||
MIT License - see the code for details.
|
||||
|
||||
## Support
|
||||
|
||||
For issues or questions:
|
||||
1. Check existing issues in the repository
|
||||
2. Create a new issue with detailed description
|
||||
3. Include steps to reproduce any bugs
|
||||
|
||||
## Changelog
|
||||
|
||||
### v1.0.0 (Initial Release)
|
||||
- Multi-user authentication system
|
||||
- ETF trade tracking
|
||||
- Portfolio management
|
||||
- Gains/losses calculation
|
||||
- Admin panel
|
||||
- Responsive design
|
||||
- SQLite database integration
|
||||
Loading…
Reference in New Issue
Block a user