This project implements an Instagram-like social feed (Insta485) with a client-side dynamic front end built from scratch. The goal is to serve a single-page style experience where the UI is rendered and updated in the browser using React, while a Flask backend exposes a REST API and uses SQLite for data persistence.

Architecture

The backend is a Python Flask application that provides REST endpoints for posts, likes, comments, and user or follow operations. The database layer uses SQLite with schema and migrations in the repo. The front end is a React application (React 19 with TypeScript/JSX) bundled by Webpack. The client fetches JSON from the API and updates the DOM without full page reloads, giving a dynamic, app-like experience.

Tech Stack

The stack includes React and React DOM for the UI, Webpack and Babel for building and transpiling, and Flask, Jinja2, and SQLite on the server. Additional libraries such as dayjs and react-infinite-scroll-component support date handling and infinite scroll in the feed. Testing is done with pytest for the REST API and Cypress for end-to-end browser tests. ESLint and Prettier are used for code quality and formatting.

Deliverables

The repo contains the Flask app (insta485), React entry and components, SQL schema, run scripts in bin/, and test suites. Building the front end with npm run build and running the Flask server allows the full application to run locally. The project illustrates how to build a modern client-side dynamic experience from scratch without relying on a prebuilt app framework.