# Getting Started

## What This Project Does

This project is a Java-based currency converter. The Maven build shows it is a small application with a handful of runtime dependencies, and the resource config suggests it talks to an external exchange-rate API using an API key.

In practice, this means the codebase is centered on reading configuration, calling a rate service, and converting values between currencies.

## Recommended Reading Order

1. **Start here:** this guide, to understand the shape of the project and where to look next.
2. **Configuration:** [`src/main/resources/config.properties`](../../src/main/resources/config.properties) to see how the API key is provided.
3. **Build and dependencies:** [`pom.xml`](../../pom.xml) to understand the Java version and libraries used.
4. **Then inspect the implementation:** the main application classes under `src/main/java/` and any classes that wrap exchange-rate access or currency conversion.

## Key Entry Points

No highly referenced classes were identified for this repository, so the best starting point is to find the application entry class under `src/main/java/` and follow the flow from there.

Look first for:

- the main launcher class with `public static void main(String[] args)`
- any service or client that reads exchange rates
- any model or utility class that performs the actual conversion

If you are unsure where to begin, search for the API key usage or the exchange-rate client and trace outward from that code.

## Project Structure

The repository appears intentionally small:

- `src/main/java/` - application source code
- `src/main/resources/` - runtime configuration and other packaged resources
- `pom.xml` - Maven project definition, dependency list, and Java version

The dependency set is minimal, which usually means the codebase has a straightforward flow and few abstraction layers.

## Configuration

### [`src/main/resources/config.properties`](../../src/main/resources/config.properties)

This file stores the exchange-rate API key configuration:

- `API_KEY` - the key used to authenticate requests to the exchange-rate service

Update this file before running the app locally, or replace the placeholder with your own secret-management approach if the project supports one.

### [`pom.xml`](../../pom.xml)

This file controls the build:

- Java source/target level: **23**
- Core libraries:
  - **Gson** for JSON handling
  - **SLF4J API** for logging
  - **SLF4J Simple** as the logging backend

## Common Patterns

The codebase likely follows a lightweight service style:

- configuration is kept in a small properties file
- external API access is isolated behind a client or helper class
- conversion logic is kept separate from I/O where possible
- logging is handled through SLF4J rather than direct `System.out` calls

When reading code, prefer following the data flow:

1. load config
2. call the exchange-rate API
3. parse the response
4. compute the converted amount
5. present the result

That flow will usually reveal the main responsibilities quickly, even in a small project.
