Community Discussion

screenshot of Community Discussion

Overview:

The community-discussion (c18n) is a Proof of Concept (PoC) app that demonstrates the use of streaming technologies to provide a community chat and discussion platform. It is built using Vue.js for the frontend and Python/Flask for the backend. The app includes features such as third party authentication, custom user authentication, websocket-based chat server, fake data generation, streaming pipeline with Apache Kafka and Spark, Elasticsearch integration, analytics portal, distributed database storage, and UI interfaces for viewing user posts, images, and videos.

Features:

  • Vue.js app: The frontend of the app is built using Vue.js, following the single page application pattern.
  • Python/Flask server endpoints: The backend of the app includes server endpoints for users, communities, and usergroups using Python/Flask.
  • Third party authentication: The app supports authentication with Okta for third party authentication.
  • Custom user authentication: Custom user authentication is implemented using JWT tokens.
  • Websocket-based chat server: The app includes a websocket-based chat server using Flask-SocketIO.
  • Fake data generation: Fake data is generated using Faker for demonstration purposes.
  • Streaming pipeline with Apache Kafka and Spark: The app uses Apache Kafka and Spark with PySpark for building a streaming pipeline.
  • Elasticsearch integration: The app integrates with Elasticsearch for indexing and searching data.
  • Analytics portal via Kibana: Kibana is used for creating an analytics portal with preconfigured dashboards.
  • Kafka producers and consumers: Kafka producers and consumers are implemented for handling input events.
  • Distributed database storage using Mongo DB: The app uses Mongo DB for distributed database storage.
  • Video and Image upload ability: Users can upload and view videos and images within the app.
  • UI interface for viewing user posts, images, and videos: The app provides a user interface for users to view their posts, images, and videos.
  • UI chatroom interface using vue-advanced-chat: A chatroom interface is implemented using the vue-advanced-chat library.
  • Scripts for emulating various workflows: The app includes scripts that emulate workflows such as user and community creation, and user content creation.
  • Extensible, Configurable setup for streaming pipeline: The streaming pipeline setup is designed to be extensible and configurable.
  • Scripts for easy setup/teardown/start/stop of services: The app includes scripts that make it easy to set up, tear down, start, and stop services.
  • Lightweight, minimal configuration for each service: Each service in the app is designed to have a lightweight and minimal configuration.
  • Follows kappa architecture: The app closely follows the kappa architecture for its design.

Summary:

The community-discussion (c18n) app is a proof of concept that utilizes streaming technologies to create a community chat and discussion platform. It has a set of features including third party authentication, custom user authentication, websocket-based chat server, fake data generation, streaming pipeline with Apache Kafka and Spark, Elasticsearch integration, analytics portal, distributed database storage, and UI interfaces for viewing user posts, images, and videos. The frontend is built with Vue.js and the backend with Python/Flask. The app follows the kappa architecture and provides extensible and configurable setup for the streaming pipeline.