# 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 <package/package>`

Then commit the `composer.json`.
