← back to Watches
OMEGA_WATCHES_SYSTEM.md
351 lines
# ⌚ Omega Watch Price History System
A comprehensive web application for tracking and visualizing historical price data for Omega watches throughout history.
## 🌐 Live Access
- **Dashboard**: http://45.61.58.125:7600
- **API**: http://45.61.58.125:7600/api
- **Port**: 7600
## 🎯 Features
### Interactive Dashboard
- Real-time statistics and metrics
- Top performing watches analysis
- Watch collection breakdowns
- Comprehensive price appreciation tracking
### Watch Catalog
- Browse all Omega watch models
- Filter by series (Speedmaster, Seamaster, Constellation, De Ville)
- Search by model name or reference number
- Detailed specifications for each model
### Price History Charts
- Interactive line charts powered by Chart.js
- Historical price data from introduction year to present
- Year-over-year price change analysis
- Detailed price history tables
### Comparison Tool
- Compare up to 5 watches simultaneously
- Side-by-side price performance analysis
- Multi-watch chart overlay
- Appreciation rankings
## 📊 Watch Collections Included
### Speedmaster
- Speedmaster Professional Moonwatch (1969)
- Speedmaster Racing (2008)
- Speedmaster Dark Side of the Moon (2013)
### Seamaster
- Seamaster 300 (1957)
- Seamaster Diver 300M (1993) - James Bond Edition
- Seamaster Planet Ocean (2005)
- Seamaster Aqua Terra (2002)
### Constellation
- Constellation (1952)
- Constellation Manhattan (2009)
### De Ville
- De Ville (1967)
## 🏗️ Architecture
### Frontend
- **Framework**: React 19
- **Build Tool**: Vite
- **Styling**: Tailwind CSS 4
- **Charts**: Chart.js + react-chartjs-2
- **Components**: Modular React components
### Backend
- **Server**: Express.js (Node.js)
- **API**: RESTful JSON API
- **Data Storage**: JSON file database
- **Port**: 7600
### File Structure
```
/root/Projects/watches/
├── server.js # Express backend server
├── package.json # Dependencies
├── vite.config.js # Vite configuration
├── tailwind.config.js # Tailwind CSS config
├── postcss.config.js # PostCSS config
├── index.html # HTML entry point
├── data/
│ └── watches.json # Watch database
├── src/
│ ├── main.jsx # React entry point
│ ├── App.jsx # Main App component
│ ├── index.css # Global styles
│ └── components/
│ ├── Header.jsx # Navigation header
│ ├── Dashboard.jsx # Statistics dashboard
│ ├── WatchList.jsx # Watch catalog grid
│ ├── PriceChart.jsx # Individual watch charts
│ └── ComparisonView.jsx # Multi-watch comparison
└── dist/ # Production build output
```
## 🚀 API Endpoints
### GET /api/watches
Returns array of all watches with basic information.
**Response**:
```json
[
{
"id": "speedmaster-moonwatch-1969",
"model": "Speedmaster Professional Moonwatch",
"series": "Speedmaster",
"reference": "ST 105.012",
"yearIntroduced": 1969,
"description": "...",
"priceHistory": [...]
}
]
```
### GET /api/watches/:id/history
Returns detailed price history for a specific watch.
**Parameters**:
- `id`: Watch ID (e.g., "speedmaster-moonwatch-1969")
### GET /api/statistics
Returns system-wide statistics.
**Response**:
```json
{
"totalWatches": 10,
"totalSeries": 4,
"averageAppreciation": "1389.86",
"topPerformers": [...],
"lastUpdated": "2024-..."
}
```
### POST /api/compare
Compare multiple watches.
**Request Body**:
```json
{
"watchIds": ["speedmaster-moonwatch-1969", "seamaster-300-1957"]
}
```
## 💾 Data Structure
### Watch Object
```json
{
"id": "unique-watch-id",
"model": "Watch Model Name",
"series": "Collection Name",
"reference": "Reference Number",
"yearIntroduced": 1969,
"description": "Watch description",
"priceHistory": [
{
"year": 1969,
"price": 275,
"condition": "new"
}
]
}
```
## 🛠️ Adding New Watches
To add a new watch model to the system:
1. Edit `/root/Projects/watches/data/watches.json`
2. Add a new watch object to the `watches` array
3. Include complete price history data
4. Restart the server: `pm2 restart omega-watches`
### Example:
```json
{
"id": "new-watch-model",
"model": "New Model Name",
"series": "Speedmaster",
"reference": "REF-123",
"yearIntroduced": 2024,
"description": "Model description",
"priceHistory": [
{ "year": 2024, "price": 8000, "condition": "new" }
]
}
```
## 📈 Price Data Updates
Historical price data is based on:
- Original retail prices (when available)
- Market values from auction results
- Price guides and watch databases
- Dealer pricing archives
**Note**: Prices are in USD and represent approximate market values. Data is for educational and historical reference purposes.
## 🔧 Development
### Install Dependencies
```bash
cd /root/Projects/watches
npm install
```
### Build Frontend
```bash
npm run build
```
### Start Development Server
```bash
npm run dev # Vite dev server on port 5173
```
### Start Production Server
```bash
npm start # Express server on port 7600
```
### PM2 Management
```bash
pm2 start server.js --name omega-watches
pm2 restart omega-watches
pm2 logs omega-watches
pm2 stop omega-watches
```
## 🎨 Customization
### Colors (Tailwind Config)
```javascript
colors: {
omega: {
red: '#C8102E', // Omega brand red
gold: '#FFD700', // Gold accents
navy: '#1A1A2E', // Dark navy
silver: '#C0C0C0' // Silver accents
}
}
```
### Adding New Features
1. **New Chart Types**: Modify `PriceChart.jsx` to add bar charts, area charts, etc.
2. **Filters**: Extend `WatchList.jsx` with year range, price range filters
3. **Export**: Add CSV/PDF export functionality
4. **User Accounts**: Integrate authentication for saved favorites
5. **Price Alerts**: Add notification system for price changes
## 🚀 Deployment
The system is currently deployed and running via PM2:
- **Process Name**: omega-watches
- **Status**: ✅ Online
- **Port**: 7600
- **Firewall**: Port 7600 open (TCP)
- **Auto-restart**: Enabled
### Verification
```bash
# Check server status
pm2 status omega-watches
# Test API
curl http://localhost:7600/api/watches
# Test external access
curl http://45.61.58.125:7600/api/statistics
```
## 📝 Future Enhancements
### Planned Features
- [ ] Real-time price tracking via watch market APIs
- [ ] User authentication and favorites
- [ ] Price prediction using historical trends
- [ ] Export charts as images/PDFs
- [ ] Mobile app version
- [ ] Email alerts for price changes
- [ ] Integration with auction house data
- [ ] Community price submissions
- [ ] Compare with other luxury watch brands
- [ ] Investment calculator (ROI analysis)
### Data Expansion
- [ ] Add vintage Omega models (pre-1950s)
- [ ] Limited edition watches
- [ ] Olympic Games editions
- [ ] Vintage condition pricing
- [ ] Regional price variations
- [ ] Secondary market data
## 🤝 Contributing
To contribute new watch data or features:
1. Add watch data to `data/watches.json`
2. Test locally
3. Rebuild frontend: `npm run build`
4. Restart server: `pm2 restart omega-watches`
## 📄 License
MIT License - Educational and historical reference purposes
## 🔗 Related Links
- Omega Official Website: https://www.omegawatches.com
- Watch Price Databases: Various auction and dealer sites
- Horological Resources: Watch collecting communities
---
## ⚙️ Technical Details
### Dependencies
```json
{
"express": "^4.21.2",
"cors": "^2.8.5",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"chart.js": "^4.5.1",
"react-chartjs-2": "^5.3.1",
"tailwindcss": "^4.1.17",
"vite": "^7.2.2"
}
```
### Browser Support
- Chrome/Edge (latest)
- Firefox (latest)
- Safari (latest)
- Mobile browsers (iOS Safari, Chrome Mobile)
### Performance
- Frontend bundle size: ~420KB (gzipped: ~137KB)
- API response time: <50ms
- Page load time: <2s
---
**Built with ❤️ for watch enthusiasts and collectors**
Server: http://45.61.58.125:7600