Closed Konosh93 closed 1 year ago
Before I reply, for this or next time, we could try using GH Discussions for things that are, well, discussions. They have some features that GH Issues don't, like replies.
Since a lot of AI tools and libs are only available for Python, I think we should go with it. Depending on what we will write, I propose the following:
Since the topic of this collaboration session is AI, I think we should use the simplest and easiest setup for the frontend. Hence, I propose we use either:
We can add any AI libs deemed necessary for the project, but to start with, we can:
TBD
Considering all of this (my preferred choices are emboldened), I would propose two structures:
project_name/
│
├── app/
│ └── main.py # main application entry point for Streamlit
│
├── .env # environment variables for local development
├── .gitignore # ignored files for Git
├── Dockerfile # Dockerfile to build the container for the application
├── docker-compose.yml # docker-compose configuration file for running services
├── requirements.txt # project dependencies
└── README.md # project documentation
project_name/
│
├── api/
│ ├── main.py # main application entry point for FastAPI
│ ├── models.py # database (vector store) models / Pydantic schemas
│ ├── crud.py # database operations / CRUD functions
│ ├── api/
│ │ ├── __init__.py
│ │ └── endpoint_name.py # FastAPI routers for specific endpoints
│ └── utils.py # utility functions and classes
│
├── frontend/
│ └── app.py # main application entry point for Streamlit
│
├── .env # environment variables for local development
├── .gitignore # ignored files for Git
├── Dockerfile # Dockerfile to build the container for the application
├── docker-compose.yml # docker-compose configuration file for running services
├── requirements.txt # project dependencies
└── README.md # project documentation
Since in most cases we will have separate apps for backend and frontend, we can use Docker and Docker Compose to orchestrate the two. Note that during development we won't need Docker Compose, since the whole dev env will be running in a container.
WDYT?
@NikitaKurpas, thank you for the excellent comment and detailed information with links. Your input has been very helpful in refining our approach for the project setup. Based on your suggestions, and our subsequent discussions, let me know if you agree with the following updates:
We'll keep the suggestions in the issue for future reference as general guidelines. For our first mob programming session, we will create the repository using Streamlit and perform the initial setup on the day of the session.
Thanks again for your valuable input!
P.S. Regarding GH Discussions, I have never used them but they seem to be better for discussions
than issues indeed.
Are we going to merge in changes using forks or branches?
Are we going to merge in changes using forks or branches?
I was thinking branches, but that means that @Konosh93 will have to add everyone as a contributor. If that is not desirable, then we can use forks instead.
This issue aims to discuss and define the structure of our monorepo and the technologies to be included in the boilerplate code. To ensure a smooth and efficient mob programming experience, we need to decide on the frontend and backend frameworks, as well as any AI libraries that we'll be using.
Please share your thoughts on the following topics:
Repository structure: How should we organize the frontend, backend, and AI components within the monorepo? Frontend frameworks: What frontend frameworks (e.g., React, Angular, Vue) should we include in the boilerplate? Backend frameworks: What backend frameworks (e.g., Express, Django, Flask) should we incorporate? AI libraries: What AI libraries (e.g., TensorFlow, PyTorch, scikit-learn) are essential for our mob programming projects? Additional considerations: Are there any other tools, libraries, or best practices we should adopt for our monorepo? Let's collaborate to create a solid foundation for our mob programming sessions!