diff --git a/.env.example b/.env.example
index 32befa40..b650d763 100644
--- a/.env.example
+++ b/.env.example
@@ -5,11 +5,11 @@ DOMAIN=localhost
# Environment: local, staging, production
ENVIRONMENT=local
-PROJECT_NAME="Full Stack FastAPI Project"
-STACK_NAME=full-stack-fastapi-project
+PROJECT_NAME="Tribe"
+STACK_NAME=tribe
# Backend
-BACKEND_CORS_ORIGINS="http://localhost,http://localhost:5173,https://localhost,https://localhost:5173,http://localhost.tiangolo.com"
+BACKEND_CORS_ORIGINS="http://localhost,http://localhost:5173,https://localhost,https://localhost:5173,http://localhost.tribe.com"
SECRET_KEY=changethis
FIRST_SUPERUSER=admin@example.com
FIRST_SUPERUSER_PASSWORD=changethis
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index 0ffc101a..54e2a55f 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -1 +1 @@
-github: [tiangolo]
+github: [StreetLamb]
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index fe718631..6ce47fd0 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -1,10 +1,10 @@
blank_issues_enabled: false
contact_links:
- name: Security Contact
- about: Please report security vulnerabilities to security@tiangolo.com
+ about: Please report security vulnerabilities to security@wovenblocks.com
- name: Question or Problem
about: Ask a question or ask about a problem in GitHub Discussions.
- url: https://github.com/tiangolo/full-stack-fastapi-template/discussions/categories/questions
+ url: https://github.com/StreetLamb/tribe/discussions/categories/q-a
- name: Feature Request
about: To suggest an idea or ask about a feature, please start with a question saying what you would like to achieve. There might be a way to do it already.
- url: https://github.com/tiangolo/full-stack-fastapi-template/discussions/categories/questions
+ url: https://github.com/StreetLamb/tribe/discussions/categories/ideas
diff --git a/.github/ISSUE_TEMPLATE/privileged.yml b/.github/ISSUE_TEMPLATE/privileged.yml
index 6438848c..637e8823 100644
--- a/.github/ISSUE_TEMPLATE/privileged.yml
+++ b/.github/ISSUE_TEMPLATE/privileged.yml
@@ -1,19 +1,19 @@
name: Privileged
-description: You are @tiangolo or he asked you directly to create an issue here. If not, check the other options. 👇
+description: You are @StreetLamb or he asked you directly to create an issue here. If not, check the other options. 👇
body:
- type: markdown
attributes:
value: |
Thanks for your interest in this project! 🚀
- If you are not @tiangolo or he didn't ask you directly to create an issue here, please start the conversation in a [Question in GitHub Discussions](https://github.com/tiangolo/full-stack-fastapi-template/discussions/categories/questions) instead.
+ If you are not @StreetLamb or he didn't ask you directly to create an issue here, please start the conversation in a [Q&A in GitHub Discussions](https://github.com/StreetLamb/tribe/discussions/categories/q-a) instead.
- type: checkboxes
id: privileged
attributes:
label: Privileged issue
description: Confirm that you are allowed to create an issue here.
options:
- - label: I'm @tiangolo or he asked me directly to create an issue here.
+ - label: I'm @StreetLamb or he asked me directly to create an issue here.
required: true
- type: textarea
id: content
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 00000000..a88f6ee6
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,48 @@
+# Tribe Code of Conduct
+
+## Our Pledge
+
+We, the community of contributors and users of Tribe, pledge to create a welcoming and inclusive environment for everyone. We are committed to fostering a respectful and harassment-free space where diverse ideas and perspectives can thrive.
+
+## Expected Behavior
+
+To contribute to a positive and inclusive atmosphere, we expect all participants, including contributors, users, and maintainers, to:
+
+1. Be respectful and considerate: Treat others with kindness, respect, and empathy. Recognize and embrace diversity in backgrounds, experiences, and opinions.
+
+2. Be inclusive: Welcome and support people of all backgrounds, identities, and abilities. Avoid any form of discrimination or exclusionary behavior.
+
+3. Listen actively: Pay attention to others' ideas, experiences, and feedback. Be open to constructive criticism and different points of view.
+
+4. Show empathy: Understand that people may have different cultural norms, communication styles, and perspectives. Be patient and considerate when engaging with others.
+
+5. Resolve conflicts constructively: Disagreements and conflicts are natural, but we encourage participants to address them in a respectful and solution-oriented manner. Avoid personal attacks and name-calling.
+
+6. Use clear and inclusive language: Use language that is respectful, inclusive, and considerate of all participants. Avoid offensive, derogatory, or discriminatory language.
+
+## Unacceptable Behavior
+
+The following behaviors are considered unacceptable and will not be tolerated within the Tribe community:
+
+1. Harassment: Any form of harassment, including but not limited to offensive comments, slurs, intimidation, or unwelcome advances, is strictly prohibited.
+
+2. Discrimination: Discriminatory actions or comments based on race, ethnicity, nationality, gender, gender identity, sexual orientation, disability, religion, age, or any other characteristic will not be tolerated.
+
+3. Hate speech: Hate speech, promoting violence, or advocating harm towards individuals or groups based on their identity is not allowed.
+
+4. Personal attacks: Engaging in personal attacks, insults, or trolling of others within the community is unacceptable.
+
+5. Disruptive behavior: Deliberate disruption of discussions, events, or community activities is discouraged.
+
+## Reporting Violations
+
+If you witness or experience behavior that violates this code of conduct, please report it promptly to the project maintainers by contacting [jerron@wovenblocks.com](jerron@wovenblocks.com).
+All reports will be treated with confidentiality, and the project maintainers will take appropriate action as necessary to address violations. We are committed to providing a safe and welcoming environment for all participants.
+
+## Enforcement
+
+Enforcement of this code of conduct will be carried out in a fair and just manner. Depending on the severity and frequency of violations, consequences may include warnings, temporary or permanent bans from the community, or other appropriate actions.
+
+## Attribution
+
+This code of conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.0, available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
\ No newline at end of file
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 00000000..56cbfd61
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,92 @@
+# Tribe Contributing Guide
+
+Thank you for considering contributing to Tribe! We welcome contributions from the community to help improve and enhance our application. Whether you're a developer or just an enthusiast, there are various ways you can get involved and make a meaningful impact.
+
+Before you begin, please take a moment to review this guide, which outlines the contribution process, code of conduct, and how to get help if needed.
+
+## Table of Contents
+
+- [Tribe Contributing Guide](#tribe-contributing-guide)
+ - [Table of Contents](#table-of-contents)
+ - [Getting Started](#getting-started)
+ - [Contributing to Tribe](#contributing-to-tribe)
+ - [Reporting Bugs](#reporting-bugs)
+ - [Suggesting Enhancements](#suggesting-enhancements)
+ - [Code Contribution](#code-contribution)
+ - [Development Setup](#development-setup)
+ - [Code of Conduct](#code-of-conduct)
+ - [Get Help](#get-help)
+
+## Getting Started
+
+Before you start contributing, please ensure you have the following:
+
+- A GitHub account: If you don't have one, you can [create an account here](https://github.com/join).
+- Familiarity with Git: You'll need to know the basics of Git for version control.
+
+## Contributing to Tribe
+
+There are several ways you can contribute to Tribe:
+
+### Reporting Bugs
+
+If you encounter any issues, bugs, or unexpected behavior while using Tribe, please help us by [reporting them](https://github.com/StreetLamb/tribe/issues). To report a bug:
+
+1. Check if the issue has already been reported by searching the [GitHub Issues](#) page.
+2. If not, create a new issue with a descriptive title and detailed description of the problem you encountered.
+3. Include relevant information such as your operating system, Python version, and any error messages.
+
+### Suggesting Enhancements
+
+We appreciate your suggestions for improving Tribe. If you have an idea for an enhancement or new feature, follow these steps:
+
+1. Check if your suggestion has already been proposed in the [GitHub Issues](https://github.com/StreetLamb/tribe/issues) section.
+2. If not, create a new issue with a clear and concise title and a detailed description of your suggestion.
+3. Include any relevant context or examples to illustrate the enhancement's value.
+
+### Code Contribution
+
+If you're interested in contributing code to Tribe, you can do so by following these steps:
+
+1. Fork the [Tribe repository](https://github.com/StreetLamb/tribe) to your GitHub account.
+2. Clone your forked repository to your local machine:
+
+ ```shell
+ git clone https://github.com/your-username/tribe.git
+ ```
+
+3. Create a new branch for your contribution:
+
+ ```shell
+ git checkout -b feature/your-feature-name
+ ```
+
+4. Make your changes and commit them with clear and concise commit messages.
+
+5. Push your changes to your forked repository:
+
+ ```shell
+ git push origin feature/your-feature-name
+ ```
+
+6. Create a pull request (PR) from your branch to the main Tribe repository.
+
+7. Ensure your PR includes a detailed description of the changes, why they are necessary, and any relevant testing or documentation updates.
+
+8. Participate in the review process, addressing any feedback or requested changes.
+
+9. Once your PR is approved, it will be merged into the main repository.
+
+## Development Setup
+
+If you want to contribute code, you'll need to set up a development environment for Tribe. Refer to the [Development Setup](./development.md) guide in the repository for detailed instructions on getting started.
+
+## Code of Conduct
+
+Please review and adhere to our [Code of Conduct](./CODE_OF_CONDUCT.md). We expect all contributors and community members to treat each other with respect and kindness.
+
+## Get Help
+
+If you have questions, need assistance, or want to discuss contributions further, open an issue for discussion.
+
+We appreciate your interest in contributing to Tribe, and we look forward to collaborating with you!
diff --git a/README.md b/README.md
index fce0bbbe..c9e657ab 100644
--- a/README.md
+++ b/README.md
@@ -1,133 +1,34 @@
-# Full Stack FastAPI Template
+
+
+
Tribe AI
+
✨ Low code tool to rapidly build and coordinate multi-agent teams ✨
+
-
-
+## What is Tribe?
+Have you heard the saying, 'Two minds are better than one'? That's true for agents too. Tribe leverages on the langgraph framework to let you customize and coordinate teams of agents easily. By splitting up tough tasks among agents that are good at different things, each one can focus on what it does best. This makes solving problems faster and better.
-## Technology Stack and Features
-- ⚡ [**FastAPI**](https://fastapi.tiangolo.com) for the Python backend API.
- - 🧰 [SQLModel](https://sqlmodel.tiangolo.com) for the Python SQL database interactions (ORM).
- - 🔍 [Pydantic](https://docs.pydantic.dev), used by FastAPI, for the data validation and settings management.
- - 💾 [PostgreSQL](https://www.postgresql.org) as the SQL database.
-- 🚀 [React](https://react.dev) for the frontend.
- - 💃 Using TypeScript, hooks, Vite, and other parts of a modern frontend stack.
- - 🎨 [Chakra UI](https://chakra-ui.com) for the frontend components.
- - 🤖 An automatically generated frontend client.
- - 🦇 Dark mode support.
-- 🐋 [Docker Compose](https://www.docker.com) for development and production.
-- 🔒 Secure password hashing by default.
-- 🔑 JWT token authentication.
-- 📫 Email based password recovery.
-- ✅ Tests with [Pytest](https://pytest.org).
-- 📞 [Traefik](https://traefik.io) as a reverse proxy / load balancer.
-- 🚢 Deployment instructions using Docker Compose, including how to set up a frontend Traefik proxy to handle automatic HTTPS certificates.
-- 🏭 CI (continuous integration) and CD (continuous deployment) based on GitHub Actions.
+## What are some use cases?
+By teaming up, agents can take on more complex tasks. Here are a few examples of what they can do together:
+- **⚽️ Footbal analysis**: Imagine a team of agents where one scours the web for the latest Premier League news, and another analyzes the data to write insightful reports on each team's performance in the new season.
+- **🏝️ Trip Planning**: For planning your next vacation, one agent could recommend the best local eateries, while another finds the top-rated hotels for you. This team makes sure every part of your trip is covered.
+- **👩💻 Customer Service**: A customer service team where one agent handles IT issues, another manages complaints, and a third takes care of product inquiries. Each agent specializes in a different area, making the service faster and more efficient.
-### Dashboard Login
+and many many more!
-[![API docs](img/login.png)](https://github.com/tiangolo/full-stack-fastapi-template)
+## Benefits of Tribe
+- **Rapid Team Design**: Build your agent teams quickly with an intuitive drag-and-drop interface. No coding experience required!
+- **Versatile Model Support**: Tribe works seamlessly with multiple commercial AI models like OpenAI, Google, and Anthropic, and is currently enhancing support for local models.
+- **Comprehensive Monitoring**: Use LangSmith to continuously monitor and test your agents to ensure peak performance.
+- **Tool use**: Empower your agents with web search capabilities and easily craft custom skills using Python and LangChain.
+- **Multi-User Support**: Tribe offers multi-user instances, allowing for collaboration and oversight across different teams.
+- **Simple Deployment**: Implement Tribe effortlessly in your system using Docker, streamlining the setup process for various environments.
-### Dashboard - Admin
-
-[![API docs](img/dashboard.png)](https://github.com/tiangolo/full-stack-fastapi-template)
-
-### Dashboard - Create User
-
-[![API docs](img/dashboard-create.png)](https://github.com/tiangolo/full-stack-fastapi-template)
-
-### Dashboard - Items
-
-[![API docs](img/dashboard-items.png)](https://github.com/tiangolo/full-stack-fastapi-template)
-
-### Dashboard - User Settings
-
-[![API docs](img/dashboard-user-settings.png)](https://github.com/tiangolo/full-stack-fastapi-template)
-
-### Dashboard - Dark Mode
-
-[![API docs](img/dashboard-dark.png)](https://github.com/tiangolo/full-stack-fastapi-template)
-
-### Interactive API Documentation
-
-[![API docs](img/docs.png)](https://github.com/tiangolo/full-stack-fastapi-template)
-
-## How To Use It
-
-You can **just fork or clone** this repository and use it as is.
-
-✨ It just works. ✨
-
-### How to Use a Private Repository
-
-If you want to have a private repository, GitHub won't allow you to simply fork it as it doesn't allow changing the visibility of forks.
-
-But you can do the following:
-
-- Create a new GitHub repo, for example `my-full-stack`.
-- Clone this repository manually, set the name with the name of the project you want to use, for example `my-full-stack`:
-
-```bash
-git clone git@github.com:tiangolo/full-stack-fastapi-template.git my-full-stack
-```
-
-- Enter into the new directory:
-
-```bash
-cd my-full-stack
-```
-
-- Set the new origin to your new repository, copy it from the GitHub interface, for example:
-
-```bash
-git remote set-url origin git@github.com:octocat/my-full-stack.git
-```
-
-- Add this repo as another "remote" to allow you to get updates later:
-
-```bash
-git remote add upstream git@github.com:tiangolo/full-stack-fastapi-template.git
-```
-
-- Push the code to your new repository:
-
-```bash
-git push -u origin master
-```
-
-### Update From the Original Template
-
-After cloning the repository, and after doing changes, you might want to get the latest changes from this original template.
-
-- Make sure you added the original repository as a remote, you can check it with:
-
-```bash
-git remote -v
-
-origin git@github.com:octocat/my-full-stack.git (fetch)
-origin git@github.com:octocat/my-full-stack.git (push)
-upstream git@github.com:tiangolo/full-stack-fastapi-template.git (fetch)
-upstream git@github.com:tiangolo/full-stack-fastapi-template.git (push)
-```
-
-- Pull the latest changes without merging:
-
-```bash
-git pull --no-commit upstream master
-```
-
-This will download the latest changes from this template without committing them, that way you can check everything is right before committing.
-
-- If there are conflicts, solve them in your editor.
-
-- Once you are done, commit the changes:
-
-```bash
-git merge --continue
-```
+## Quick Start
### Configure
-You can then update configs in the `.env` files to customize your configurations.
+Update configs in the `.env` files to customise your configurations.
Before deploying it, make sure you change at least the values for:
@@ -151,83 +52,45 @@ python -c "import secrets; print(secrets.token_urlsafe(32))"
Copy the content and use that as password / secret key. And run that again to generate another secure key.
-## How To Use It - Alternative With Copier
-This repository also supports generating a new project using [Copier](https://copier.readthedocs.io).
+### Creating your first team
-It will copy all the files, ask you configuration questions, and update the `.env` files with your answers.
+Log into Tribe using the email and password you defined during the installation step.
-### Install Copier
+[![API docs](./img/tribe-login.png)](https://github.com/StreetLamb/tribe)
-You can install Copier with:
-
-```bash
-pip install copier
-```
-
-Or better, if you have [`pipx`](https://pipx.pypa.io/), you can run it with:
-
-```bash
-pipx install copier
-```
-
-**Note**: If you have `pipx`, installing copier is optional, you could run it directly.
-
-### Generate a Project With Copier
-
-Decide a name for your new project's directory, you will use it below. For example, `my-awesome-project`.
-
-Go to the directory that will be the parent of your project, and run the command with your project's name:
-
-```bash
-copier copy https://github.com/tiangolo/full-stack-fastapi-template my-awesome-project --trust
-```
-
-If you have `pipx` and you didn't install `copier`, you can run it directly:
-
-```bash
-pipx run copier copy https://github.com/tiangolo/full-stack-fastapi-template my-awesome-project --trust
-```
+Navigate to the 'Teams' page and click on 'Add Team'. Enter a name for your team and click 'Save'.
-**Note** the `--trust` option is necessary to be able to execute a [post-creation script](https://github.com/tiangolo/full-stack-fastapi-template/blob/master/.copier/update_dotenv.py) that updates your `.env` files.
+[![API docs](./img/tribe-dashboard-team.png)](https://github.com/StreetLamb/tribe)
-### Input Variables
-Copier will ask you for some data, you might want to have at hand before generating the project.
+Create two additional team members by dragging the handle of the Team Leader node.
-But don't worry, you can just update any of that in the `.env` files afterwards.
+[![API docs](./img/tribe-team-members.png)](https://github.com/StreetLamb/tribe)
-The input variables, with their default values (some auto generated) are:
+Update the first team member as shown.
-- `project_name`: (default: `"FastAPI Project"`) The name of the project, shown to API users (in .env).
-- `stack_name`: (default: `"fastapi-project"`) The name of the stack used for Docker Compose labels and project name (no spaces, no periods) (in .env).
-- `secret_key`: (default: `"changethis"`) The secret key for the project, used for security, stored in .env, you can generate one with the method above.
-- `first_superuser`: (default: `"admin@example.com"`) The email of the first superuser (in .env).
-- `first_superuser_password`: (default: `"changethis"`) The password of the first superuser (in .env).
-- `smtp_host`: (default: "") The SMTP server host to send emails, you can set it later in .env.
-- `smtp_user`: (default: "") The SMTP server user to send emails, you can set it later in .env.
-- `smtp_password`: (default: "") The SMTP server password to send emails, you can set it later in .env.
-- `emails_from_email`: (default: `"info@example.com"`) The email account to send emails from, you can set it later in .env.
-- `postgres_password`: (default: `"changethis"`) The password for the PostgreSQL database, stored in .env, you can generate one with the method above.
-- `sentry_dsn`: (default: "") The DSN for Sentry, if you are using it, you can set it later in .env.
+[![API docs](./img/tribe-team-member-1.png)](https://github.com/StreetLamb/tribe)
-## Backend Development
+Update the second team member as shown.
-Backend docs: [backend/README.md](./backend/README.md).
+[![API docs](./img/tribe-team-member-2.png)](https://github.com/StreetLamb/tribe)
-## Frontend Development
-Frontend docs: [frontend/README.md](./frontend/README.md).
+Go to the 'Chat' tab and send a question to your team to see how they respond.
-## Deployment
+[![API docs](./img/tribe-team-chat.png)](https://github.com/StreetLamb/tribe)
-Deployment docs: [deployment.md](./deployment.md).
+Congratulations! You’ve successfully built and communicated with your first multi-agent team on Tribe.
-## Development
+## Contribution
-General development docs: [development.md](./development.md).
+Tribe is open sourced and welcome contributions from the community! Check out our [contribution guide](./CONTRIBUTING.md) to get started.
-This includes using Docker Compose, custom local domains, `.env` configurations, etc.
+Some ways to contribute:
+- Report bugs and issues.
+- Enhance our documentation.
+- Suggest or contribute new features or enhancements.
## Release Notes
@@ -235,4 +98,4 @@ Check the file [release-notes.md](./release-notes.md).
## License
-The Full Stack FastAPI Template is licensed under the terms of the MIT license.
+Tribe is licensed under the terms of the MIT license.
diff --git a/SECURITY.md b/SECURITY.md
index 0045fb81..9870eb09 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -12,9 +12,9 @@ You are encouraged to write tests for your application and update your versions
## Reporting a Vulnerability
-If you think you found a vulnerability, and even if you are not sure about it, please report it right away by sending an email to: security@tiangolo.com. Please try to be as explicit as possible, describing all the steps and example code to reproduce the security issue.
+If you think you found a vulnerability, and even if you are not sure about it, please report it right away by sending an email to: security@wovenblocks.com. Please try to be as explicit as possible, describing all the steps and example code to reproduce the security issue.
-I (the author, [@tiangolo](https://twitter.com/tiangolo)) will review it thoroughly and get back to you.
+I (the author, [streetlamb](https://github.com/StreetLamb)) will review it thoroughly and get back to you.
## Public Discussions
diff --git a/backend/README.md b/backend/README.md
index e6400be1..50580d7a 100644
--- a/backend/README.md
+++ b/backend/README.md
@@ -1,4 +1,4 @@
-# FastAPI Project - Backend
+# Tribe - Backend
## Requirements
diff --git a/copier.yml b/copier.yml
index 5db3891c..fe5ddcec 100644
--- a/copier.yml
+++ b/copier.yml
@@ -1,12 +1,12 @@
project_name:
type: str
help: The name of the project, shown to API users (in .env)
- default: FastAPI Project
+ default: Tribe
stack_name:
type: str
help: The name of the stack used for Docker Compose labels (no spaces) (in .env)
- default: fastapi-project
+ default: tribe
secret_key:
type: str
diff --git a/deployment.md b/deployment.md
index c749b161..aee1b928 100644
--- a/deployment.md
+++ b/deployment.md
@@ -1,4 +1,4 @@
-# FastAPI Project - Deployment
+# Tribe - Deployment
You can deploy the project using Docker Compose to a remote server.
@@ -12,7 +12,7 @@ But you have to configure a couple things first. 🤓
* Have a remote server ready and available.
* Configure the DNS records of your domain to point to the IP of the server you just created.
-* Configure a wildcard subdomain for your domain, so that you can have multiple subdomains for different services, e.g. `*.fastapi-project.example.com`. This will be useful for accessing different components, like `traefik.fastapi-project.example.com`, `adminer.fastapi-project.example.com`, etc. And also for `staging`, like `staging.fastapi-project.example.com`, `staging.adminer.fastapi-project.example.com`, etc.
+* Configure a wildcard subdomain for your domain, so that you can have multiple subdomains for different services, e.g. `*.tribe.example.com`. This will be useful for accessing different components, like `traefik.tribe.example.com`, `adminer.tribe.example.com`, etc. And also for `staging`, like `staging.tribe.example.com`, `staging.adminer.tribe.example.com`, etc.
* Install and configure [Docker](https://docs.docker.com/engine/install/) on the remote server (Docker Engine, not Docker Desktop).
## Public Traefik
@@ -78,7 +78,7 @@ echo $HASHED_PASSWORD
* Create an environment variable with the domain name for your server, e.g.:
```bash
-export DOMAIN=fastapi-project.example.com
+export DOMAIN=tribe.example.com
```
* Create an environment variable with the email for Let's Encrypt, e.g.:
@@ -103,9 +103,9 @@ Now with the environment variables set and the `docker-compose.traefik.yml` in p
docker compose -f docker-compose.traefik.yml up -d
```
-## Deploy the FastAPI Project
+## Deploy Tribe
-Now that you have Traefik in place you can deploy your FastAPI project with Docker Compose.
+Now that you have Traefik in place you can deploy Tribe with Docker Compose.
**Note**: You might want to jump ahead to the section about Continuous Deployment with GitHub Actions.
@@ -122,15 +122,15 @@ export ENVIRONMENT=production
Set the `DOMAIN`, by default `localhost` (for development), but when deploying you would use your own domain, for example:
```bash
-export DOMAIN=fastapi-project.example.com
+export DOMAIN=tribe.example.com
```
You can set several variables, like:
* `PROJECT_NAME`: The name of the project, used in the API for the docs and emails.
-* `STACK_NAME`: The name of the stack used for Docker Compose labels and project name, this should be different for `staging`, `production`, etc. You could use the same domain replacing dots with dashes, e.g. `fastapi-project-example-com` and `staging-fastapi-project-example-com`.
+* `STACK_NAME`: The name of the stack used for Docker Compose labels and project name, this should be different for `staging`, `production`, etc. You could use the same domain replacing dots with dashes, e.g. `tribe-example-com` and `staging-tribe-example-com`.
* `BACKEND_CORS_ORIGINS`: A list of allowed CORS origins separated by commas.
-* `SECRET_KEY`: The secret key for the FastAPI project, used to sign tokens.
+* `SECRET_KEY`: The secret key for the Tribe project, used to sign tokens.
* `FIRST_SUPERUSER`: The email of the first superuser, this superuser will be the one that can create new users.
* `FIRST_SUPERUSER_PASSWORD`: The password of the first superuser.
* `USERS_OPEN_REGISTRATION`: Whether to allow open registration of new users.
@@ -277,28 +277,28 @@ If you need to add extra environments you could use those as a starting point.
## URLs
-Replace `fastapi-project.example.com` with your domain.
+Replace `tribe.example.com` with your domain.
### Main Traefik Dashboard
-Traefik UI: `https://traefik.fastapi-project.example.com`
+Traefik UI: `https://traefik.tribe.example.com`
### Production
-Frontend: `https://fastapi-project.example.com`
+Frontend: `https://tribe.example.com`
-Backend API docs: `https://fastapi-project.example.com/docs`
+Backend API docs: `https://tribe.example.com/docs`
-Backend API base URL: `https://fastapi-project.example.com/api/`
+Backend API base URL: `https://tribe.example.com/api/`
-Adminer: `https://adminer.fastapi-project.example.com`
+Adminer: `https://adminer.tribe.example.com`
### Staging
-Frontend: `https://staging.fastapi-project.example.com`
+Frontend: `https://staging.tribe.example.com`
-Backend API docs: `https://staging.fastapi-project.example.com/docs`
+Backend API docs: `https://staging.tribe.example.com/docs`
-Backend API base URL: `https://staging.fastapi-project.example.com/api/`
+Backend API base URL: `https://staging.tribe.example.com/api/`
-Adminer: `https://staging.adminer.fastapi-project.example.com`
+Adminer: `https://staging.adminer.tribe.example.com`
diff --git a/development.md b/development.md
index 857a4e0a..7c6dc19b 100644
--- a/development.md
+++ b/development.md
@@ -1,16 +1,16 @@
-# FastAPI Project - Development
+# Tribe - Development
## Development in `localhost` with a custom domain
You might want to use something different than `localhost` as the domain. For example, if you are having problems with cookies that need a subdomain, and Chrome is not allowing you to use `localhost`.
-In that case, you have two options: you could use the instructions to modify your system `hosts` file with the instructions below in **Development with a custom IP** or you can just use `localhost.tiangolo.com`, it is set up to point to `localhost` (to the IP `127.0.0.1`) and all its subdomains too. And as it is an actual domain, the browsers will store the cookies you set during development, etc.
+In that case, you have two options: you could use the instructions to modify your system `hosts` file with the instructions below in **Development with a custom IP** or you can just use `localhost.tribe.com`, it is set up to point to `localhost` (to the IP `127.0.0.1`) and all its subdomains too. And as it is an actual domain, the browsers will store the cookies you set during development, etc.
-If you used the default CORS enabled domains while generating the project, `localhost.tiangolo.com` was configured to be allowed. If you didn't, you will need to add it to the list in the variable `BACKEND_CORS_ORIGINS` in the `.env` file.
+If you used the default CORS enabled domains while generating the project, `localhost.tribe.com` was configured to be allowed. If you didn't, you will need to add it to the list in the variable `BACKEND_CORS_ORIGINS` in the `.env` file.
-To configure it in your stack, follow the section **Change the development "domain"** below, using the domain `localhost.tiangolo.com`.
+To configure it in your stack, follow the section **Change the development "domain"** below, using the domain `localhost.tribe.com`.
-After performing those steps you should be able to open: http://localhost.tiangolo.com and it will be served by your stack in `localhost`.
+After performing those steps you should be able to open: http://localhost.tribe.com and it will be served by your stack in `localhost`.
Check all the corresponding available URLs in the section at the end.
@@ -61,7 +61,7 @@ DOMAIN=localhost
* Change it to the domain you are going to use, e.g.:
```
-DOMAIN=localhost.tiangolo.com
+DOMAIN=localhost.tribe.com
```
That variable will be used by the Docker Compose files.
@@ -162,14 +162,14 @@ Traefik UI: http://localhost:8090
Development URLs, for local development.
-Frontend: http://localhost.tiangolo.com
+Frontend: http://localhost.tribe.com
-Backend: http://localhost.tiangolo.com/api/
+Backend: http://localhost.tribe.com/api/
-Automatic Interactive Docs (Swagger UI): http://localhost.tiangolo.com/docs
+Automatic Interactive Docs (Swagger UI): http://localhost.tribe.com/docs
-Automatic Alternative Docs (ReDoc): http://localhost.tiangolo.com/redoc
+Automatic Alternative Docs (ReDoc): http://localhost.tribe.com/redoc
-Adminer: http://localhost.tiangolo.com:8080
+Adminer: http://localhost.tribe.com:8080
-Traefik UI: http://localhost.tiangolo.com:8090
+Traefik UI: http://localhost.tribe.com:8090
diff --git a/frontend/README.md b/frontend/README.md
index 7dd453b6..b33e9092 100644
--- a/frontend/README.md
+++ b/frontend/README.md
@@ -1,4 +1,4 @@
-# FastAPI Project - Frontend
+# Tribe - Frontend
The frontend is built with [Vite](https://vitejs.dev/), [React](https://reactjs.org/), [TypeScript](https://www.typescriptlang.org/), [TanStack Query](https://tanstack.com/query), [TanStack Router](https://tanstack.com/router) and [Chakra UI](https://chakra-ui.com/).
diff --git a/frontend/index.html b/frontend/index.html
index ce11e5ad..4b63a315 100644
--- a/frontend/index.html
+++ b/frontend/index.html
@@ -1,11 +1,15 @@
-
+
- Full Stack FastAPI Project
-
+ Tribe
+
diff --git a/frontend/src/assets/images/fastapi-logo.svg b/frontend/src/assets/images/fastapi-logo.svg
deleted file mode 100644
index d3dad4be..00000000
--- a/frontend/src/assets/images/fastapi-logo.svg
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
diff --git a/frontend/src/assets/images/favicon.png b/frontend/src/assets/images/favicon.png
index e5b7c3ad..11544357 100644
Binary files a/frontend/src/assets/images/favicon.png and b/frontend/src/assets/images/favicon.png differ
diff --git a/frontend/src/assets/images/tribe-logo.png b/frontend/src/assets/images/tribe-logo.png
new file mode 100644
index 00000000..fb38ba43
Binary files /dev/null and b/frontend/src/assets/images/tribe-logo.png differ
diff --git a/frontend/src/components/Common/Sidebar.tsx b/frontend/src/components/Common/Sidebar.tsx
index 24a82e9a..950a1443 100644
--- a/frontend/src/components/Common/Sidebar.tsx
+++ b/frontend/src/components/Common/Sidebar.tsx
@@ -1,5 +1,6 @@
import {
Box,
+ Container,
Drawer,
DrawerBody,
DrawerCloseButton,
@@ -15,7 +16,7 @@ import {
import { FiLogOut, FiMenu } from "react-icons/fi"
import { useQueryClient } from "react-query"
-import Logo from "../../assets/images/fastapi-logo.svg"
+import Logo from "../../assets/images/tribe-logo.png"
import type { UserOut } from "../../client"
import useAuth from "../../hooks/useAuth"
import SidebarItems from "./SidebarItems"
@@ -52,7 +53,16 @@ const Sidebar = () => {
-
+
+
+ Tribe AI
+ {
borderRadius={12}
>
-
+
+
+ Tribe AI
+
{currentUser?.email && (
diff --git a/frontend/src/routes/login.tsx b/frontend/src/routes/login.tsx
index 4443e7f4..bfb1bd04 100644
--- a/frontend/src/routes/login.tsx
+++ b/frontend/src/routes/login.tsx
@@ -21,7 +21,7 @@ import {
import React from "react"
import { type SubmitHandler, useForm } from "react-hook-form"
-import Logo from "../assets/images/fastapi-logo.svg"
+import Logo from "../assets/images/tribe-logo.png"
import type { ApiError } from "../client"
import type { Body_login_login_access_token as AccessToken } from "../client/models/Body_login_login_access_token"
import useAuth, { isLoggedIn } from "../hooks/useAuth"
@@ -78,12 +78,20 @@ function Login() {
>
+
+ Tribe AI
+
-
diff --git a/img/login.png b/img/login.png
deleted file mode 100644
index 66e3a720..00000000
Binary files a/img/login.png and /dev/null differ
diff --git a/img/tribe-dashboard-team.png b/img/tribe-dashboard-team.png
new file mode 100644
index 00000000..9ad8bf6a
Binary files /dev/null and b/img/tribe-dashboard-team.png differ
diff --git a/img/tribe-login.png b/img/tribe-login.png
new file mode 100644
index 00000000..b58c8acc
Binary files /dev/null and b/img/tribe-login.png differ
diff --git a/img/tribe-logo.png b/img/tribe-logo.png
new file mode 100644
index 00000000..fb38ba43
Binary files /dev/null and b/img/tribe-logo.png differ
diff --git a/img/tribe-team-chat.png b/img/tribe-team-chat.png
new file mode 100644
index 00000000..d3e9bc19
Binary files /dev/null and b/img/tribe-team-chat.png differ
diff --git a/img/tribe-team-member-1.png b/img/tribe-team-member-1.png
new file mode 100644
index 00000000..838f51a1
Binary files /dev/null and b/img/tribe-team-member-1.png differ
diff --git a/img/tribe-team-member-2.png b/img/tribe-team-member-2.png
new file mode 100644
index 00000000..044cb182
Binary files /dev/null and b/img/tribe-team-member-2.png differ
diff --git a/img/tribe-team-members.png b/img/tribe-team-members.png
new file mode 100644
index 00000000..a9b24602
Binary files /dev/null and b/img/tribe-team-members.png differ