# Introduction

### 🤔 **How Does It Work?**

1. **Starting Up**: Once you kick off the web server, you'll find two main endpoints:
   * **Get Endpoint**: Use this to fetch a user's data.
   * **Post Endpoint**: Use this to store a user's data.
2. **Modularity Showcase**: The beauty of LightningUserVault lies in its modularity. It's a shining example of how a Go application can be structured into multiple modules. Plus, it's a guide on how to write tests for such applications.
3. **Storage Solutions**:

   * **Key-Value In-Memory Storage**: For those who prefer lightning-fast data access.
   * **SQL Storage**: For structured data storage and complex queries.

   Currently, we're using Pebble for key-value storage and Postgres for SQL. But here's the cool part: the web app doesn't mind which specific system you use, as long as it fits our Storage interface.
4. **Caching Mechanism**: Just like our storage, we've made caching modular too. If you can match our Cache interface, you can plug in any caching system you like. For now, we're using memcache.

{% embed url="<https://www.loom.com/share/bf737c3515e84192a9207157d0e3a5b7>" %}
Application Overview
{% endembed %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://gotolabs.gitbook.io/lightninguservault/introduction.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
