Skip to content

Add a documentation page describing the different parts of the Openverse stack #3786

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 16 commits into from
Feb 28, 2024
Merged
50 changes: 50 additions & 0 deletions documentation/general/stack.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Stack

This page is your gateway to understanding our diverse technology stack. Explore code repositories on GitHub, access detailed documentation, and learn about the tools, frameworks, and languages driving each stack of the Openverse platform.

1. Catalog
- Powered by Apache Airflow, it stores Openverse metadata efficiently.
- [Code](https://github.com/WordPress/openverse/blob/main/catalog)
- [Documentation](https://docs.openverse.org/catalog/index.html)
- Language: Python
- Tools and Framework:
- [Apache Airflow](https://airflow.apache.org/docs/apache-airflow-providers-google/stable/operators/cloud/datacatalog.html)
2. Ingestion Server
- The mechanism for refreshing the data from the catalog to the API.
- [Code](https://github.com/WordPress/openverse/blob/main/ingestion_server)
- [Documentation](https://docs.openverse.org/ingestion_server/index.html)
- Language: Python
- Tools and Framework:
- [Elasticsearch](https://www.elastic.co/guide/index.html)
- [Docker](https://docs.docker.com/)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Docker is basically a dev + deployment mechanism and not a part of the stack's technologies so I recommend dropping that.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay

3. API
- Built with Django REST, it enables database querying for the Frontend.
- [Code](https://github.com/WordPress/openverse/blob/main/api)
- [Documentation](https://docs.openverse.org/api/index.html)
- Language: Python
- Tools and Framework:
- [Django REST Framework](https://www.django-rest-framework.org/)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also include Django above this.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shall I add it to line number 25?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, that would be great, thanks!

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dhruvkb do you have an opinion about the docs links being pinned to a version? (5.0 in this case?) Not sure there's anything we can do about that 🤔

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do I need to make any changes related to the link over here?

- [Docker](https://docs.docker.com/)
4. Frontend
- The public search engine at [openverse.org](https://openverse.org/), built with Vue and Nuxt.
- [Code](https://github.com/WordPress/openverse/blob/main/frontend)
- [Documentation](https://docs.openverse.org/frontend/index.html)
- Language: JavaScript, HTML, CSS
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

HTML and CSS are kind-of universal to frontend dev so we can skip them. Also TypeScript is more appropriate here.

Suggested change
- Language: JavaScript, HTML, CSS
- Language: TypeScript / Node.js

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay

- Tools and Framework:
- [Nuxt.js](https://nuxt.com/docs/getting-started/introduction)
- [Vue.js](https://vuejs.org/guide/introduction.html)
- [Node.js](https://nodejs.org/docs/latest/api/)
- [Tailwind CSS](https://v2.tailwindcss.com/docs)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Node.js is neither a tool nor a framework. It's a JS runtime, so it feels incorrect to list here.

As for TailwindCSS, it is a very small, not-noteworthy slice of the number of technologies we use in the frontend.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay

5. Automation
- Scripts used for various workflows around Openverse repositories and processes.
- [Code](https://github.com/WordPress/openverse/tree/main/automations)
- [Documentation](https://docs.openverse.org/automations/index.html)
- Language: Python
- Tools and Framework:
- [Node.js](https://nodejs.org/docs/latest/api/)






Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These blank lines should be removed as the lint job in CI will complain.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay