Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Import and track large timesheet CSVs with ChronoFlow, a performance-oriented Laravel backend project.

Notifications You must be signed in to change notification settings

benjamimWalker/chrono-flow

Repository files navigation

Project logo

Overview

Chrono Flow is a Laravel project focused on high-performance backend data processing. It lets you upload a large (≈80 MB) CSV simulating a work log of 1,000,000 entries. Once submitted, the app quickly extracts and inserts all records into a MySQL database. Such a large number of entries would be preferably handled in a queue, but to show the performance it was done in a single request.

Technology

Key Technologies used:

  • Laravel 12
  • MySQL
  • Nginx
  • Docker + Docker Compose
  • Alpine.js & Tailwind CSS
  • PestPHP

Getting started

Important

You must have Docker and Docker Compose installed on your machine.

  • Clone the repository:
git clone https://github.com/benjamimWalker/chrono-flow.git
  • Go to the project folder:
cd chrono-flow
  • Prepare environment files:
cp .env.example .env
  • Build the containers:
docker compose up -d
  • Install composer dependencies:
docker compose exec app composer install
  • Run the migrations:
docker compose exec app php artisan migrate
  • Install npm dependencies:
docker compose run --rm npm install
  • Build the assets:
docker compose run --rm npm run build
  • You can now execute the tests:
docker compose exec app php artisan test

How to use

1 - Upload the CSV

There is a python script on the root folder that generates a CSV file with 1,000,000 entries. You can run it and upload the file to the application. Navigate to the home page at http://localhost and upload the CSV.

Content creation image Content creation image

2 - Check the contents

After importing, the app redirects to a results page that lists all entries paginated.

Content creation image

Features

The main features of the application are:

  • High-speed processing of large CSV files using Laravel 12's new concurrency features.
  • Bulk insertion of up to 1,000,000 records into MySQL in a few seconds.
  • Full test coverage with PestPHP.
  • Clean, maintainable Laravel 12 code with proper architecture.

[Benjamim] - [[email protected]] Github: @benjamimWalker

About

Import and track large timesheet CSVs with ChronoFlow, a performance-oriented Laravel backend project.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published