> ## Documentation Index
> Fetch the complete documentation index at: https://lib.hao.vc/llms.txt
> Use this file to discover all available pages before exploring further.

# What is next?

> What am I supposed to do if I want to build an application with haolib?

export const Dialogue = ({dialogue}) => {
  if (!dialogue || !Array.isArray(dialogue) || dialogue.length === 0) {
    return null;
  }
  return <div style={{
    margin: '2rem 0'
  }}>
            {dialogue.map((message, index) => {
    const isWriter = message.role === 'writer' || message.role === 'assistant';
    const messageText = message.text || message.content || '';
    return <div key={index} style={{
      display: 'flex',
      justifyContent: isWriter ? 'flex-end' : 'flex-start',
      marginBottom: '2rem',
      padding: '1rem'
    }}>
                        <div style={{
      maxWidth: '75%',
      display: 'flex',
      flexDirection: isWriter ? 'row-reverse' : 'row',
      alignItems: 'flex-start',
      gap: '1rem'
    }}>
                            <div style={{
      width: '50px',
      height: '50px',
      borderRadius: '50%',
      background: isWriter ? 'linear-gradient(135deg, #00CC8B 0%, #07C983 100%)' : 'linear-gradient(135deg, #07C983 0%, #00CC8B 100%)',
      display: 'flex',
      alignItems: 'center',
      justifyContent: 'center',
      fontSize: '1.5rem',
      flexShrink: 0
    }}>
                                {isWriter ? '🐱' : '👤'}
                            </div>

                            <div style={{
      flex: 1
    }}>
                                <div style={{
      fontSize: '0.75rem',
      fontWeight: '600',
      textTransform: 'uppercase',
      letterSpacing: '1px',
      marginBottom: '0.5rem',
      color: isWriter ? '#00CC8B' : '#07C983',
      textAlign: isWriter ? 'right' : 'left'
    }}>
                                    {isWriter ? 'HAO' : 'You'}
                                </div>

                                <div style={{
      background: isWriter ? 'linear-gradient(135deg, rgba(0, 204, 139, 0.2) 0%, rgba(7, 201, 131, 0.1) 100%)' : 'linear-gradient(135deg, rgba(7, 201, 131, 0.2) 0%, rgba(0, 204, 139, 0.1) 100%)',
      backdropFilter: 'blur(10px)',
      borderRadius: isWriter ? '24px 8px 24px 24px' : '8px 24px 24px 24px',
      padding: '1.5rem',
      border: isWriter ? '2px solid rgba(0, 204, 139, 0.4)' : '2px solid rgba(7, 201, 131, 0.4)',
      boxShadow: isWriter ? '0 10px 30px rgba(0, 204, 139, 0.25)' : '0 10px 30px rgba(7, 201, 131, 0.25)',
      color: '#ffffff',
      fontSize: '1rem',
      lineHeight: '1.7'
    }}>
                                    {messageText}
                                </div>
                            </div>
                        </div>
                    </div>;
  })}
        </div>;
};

Congratulations! You surely were brave enough to read the "[READ THIS NO MATTER WHAT, SERIOUSLY!!!](/index)" section and you are ready to start...

To do what exactly? Build an application with another fancy framework?

No, no, no, it is not that easy! First, you have to choose the tools to use. And we have some recommendations for you!

## Our recommendation is to use the following tools (we consider these SOTA and haolib supports them in one way or another):

### Web API

* [FastAPI](https://fastapi.tiangolo.com/) as the web framework

### Async API

* [FastStream](https://faststream.dev/) as the async API framework
* [Apache Kafka](https://kafka.apache.org/) as the message broker

### Database

* [SQLAlchemy](https://www.sqlalchemy.org/) as the [ORM](https://en.wikipedia.org/wiki/Object%E2%80%93relational_mapping) or [the query builder](https://en.wikipedia.org/wiki/Object%E2%80%93relational_mapping)
* [PostgreSQL](https://www.postgresql.org/) as the database. Or any other database that is built on top of PostgreSQL, for example, [Supabase](https://supabase.com/docs)
* [Redis](https://redis.io/docs/latest/develop/clients/redis-py/) for caching

### Background tasks

* [TaskIQ](https://taskiq-python.github.io/guide/getting-started.html) as the background tasks framework

### Observability

* [OpenTelemetry](https://opentelemetry.io/) as the observability toolkit
* [Tempo](https://grafana.com/docs/tempo/latest/) for tracing
* [Mimir](https://grafana.com/docs/mimir/latest/) for metrics
* [Loki](https://grafana.com/oss/loki/) for logging
* [Grafana](https://grafana.com/) for visualization

### Security

[StackAuth](https://stack-auth.com/) as the authentication and authorization platform. Can be self-hosted and easily integrated with Next.JS (which is 100% SOTA) or any other JavaScript/TypeScript framework using StackAuth SDK

<Note>Now, when you are familiar with the SOTA tools to use and probably selected some of them for your project, let's see what we should do next... Look! It's HAO!</Note>

<Dialogue
  dialogue={
[
    {
        role: 'writer',
        content: 'Meow! HAO here! I am gonna help you if you have any questions!'
    },
    {
        role: 'reader',
        content: 'The only question so far is how a cat can help me build an application?'
    },
    {
        role: 'writer',
        content: 'Well, I am not a regular cat, I am a Humanless Autonomous Organism! I will help you in the process of exploring the haolib integrated tools!'
    },
    {
        role: 'reader',
        content: 'What is the next step then?'
    },
    {
        role: 'writer',
        content: 'The next step is to install the haolib! Let me show you how to do it!'
    }
]
}
/>

HAO, wait, before we go to the installation guide, we have to give a brief overview of the haolib features...
