# 100 Days of Code: Real-Time Forex Data Dashboard Project

Embark on a 100-day coding challenge to build a real-time forex data dashboard. This project will enhance your Python, TimescaleDB, and web development skills, culminating in a fully functional dashboard.

## **Preparation**
- **Day 1-5: Environment Setup**
  - Install Python, necessary libraries (`requests`, `psycopg2`/`SQLAlchemy`, `Plotly`, `Flask`/`Django`), and set up TimescaleDB.
  - Familiarize yourself with the documentation of these tools and technologies.

## **Phase 1: Data Acquisition and Storage**

- **Day 6-10: Learning API Interaction**
  - Register for a forex data API (e.g., Oanda, Alpha Vantage) and obtain an API key.
  - Practice fetching data using the `requests` library.

- **Day 11-20: Designing Database Schema**
  - Learn about TimescaleDB and its advantages for time-series data.
  - Design a schema for storing forex data efficiently.

- **Day 21-30: Implementing Data Storage**
  - Write Python scripts to insert API data into TimescaleDB.
  - Set up a scheduled task for regular data fetching and storage.

## **Phase 2: Data Visualization**

- **Day 31-40: Exploring Plotly**
  - Dive into Plotly's documentation and tutorials.
  - Create basic static visualizations to understand Plotly's capabilities.

- **Day 41-50: Developing Interactive Visualizations**
  - Develop interactive charts (line charts, candlestick charts) for forex data.
  - Ensure charts are dynamic and update with new data.

## **Phase 3: Web Dashboard Development**

- **Day 51-60: Choosing a Web Framework**
  - Decide between Flask and Django for the web dashboard.
  - Set up a basic web server and familiarize yourself with routing and templates.

- **Day 61-70: Dashboard Structure Development**
  - Develop the structure of the web dashboard, including routes and endpoints.
  - Begin integrating static Plotly charts into the web application.

- **Day 71-80: Integrating Real-Time Data**
  - Implement dynamic data fetching on the client side to update visualizations in real-time.
  - Enhance the dashboard with additional features like date range selectors.

## **Phase 4: Deployment and Testing**

- **Day 81-90: Testing**
  - Thoroughly test the dashboard in a development environment.
  - Ensure all components work seamlessly and visualizations update as expected.

- **Day 91-95: Deployment Preparation**
  - Prepare for deployment by securing API keys and sensitive information.
  - Choose a deployment platform (Heroku, AWS, Google Cloud) and familiarize yourself with the deployment process.

- **Day 96-100: Deployment**
  - Deploy the dashboard to the chosen platform.
  - Perform final tests to ensure everything works as expected in the production environment.

## **Conclusion**

Congratulations! You've completed the 100 days of code challenge and built a real-time forex data dashboard. This project not only showcases your technical skills but also demonstrates your commitment to learning and development. Share your project with potential employers, on social media, or within coding communities to gain feedback and recognition for your hard work.
