# Ecomm Store PHP MVC Ecomm App w/SqliteDB ## Goals for MVP - Avoid using JavaScript - make it usable without - Multicurrency sats/cents - Store Credit - Products, carts, checkout, orders, returns/refunds. - Subscriptions/recurring payments - Email sign-in links, email notifications - Light/dark theme ## Initial setup/install Copy the `.env.example` into `.env` and edit with your preferences/credentials. `cp .env.example .env` `vim .env` install composer packages using the `composer.phar` executable included in this repo `chmod +x composer.phar` `php composer.phar install` Use tailwind-cli to automatically generate `/public/style.css` from `/src/style.css` This repo includes an older `tailwindcss` binary for Apple ARM M-series processors. I could not get recent versions to work properly. `chmod +x tailwindcss` `./tailwindcss -i ./src/style.css -o ./public/style.css --watch` You should only use `--watch` in development. Tailwind (JavaScript) only generates the CSS file used in prod. We're still "avoiding JS". ## Run it Start the local Php server from the project root, serves only the /public folder `php -S localhost:8080 -t public` Goto `http://localhost:8080` in your browser. ## Development Fork it and make changes if you want! Make a PR into `main`. ### Routing `/public/index.php` is the router, define all your urls there and assign a controller method for each route Other app-wide defaults and vars are also set here. ### Themeing `public/index.php` is also where all colors are defined. It uses tailwind class strings to cover both light and dark themes. `tailwind.config.js` can be used to define a custom color pallete. There is a bit of JS used to set a cookie that the server can read. This cookie just contains the user's browser's theme preference so the server can efficiently deliver light/dark image assets based on the theme. ### Composer To add additional composer packages: `php composer.phar require ` Then commit the `composer.json`.