A calendar and tasks/chores dashboard for home use. Running with Docker, it's built with PHP and uses the Paprika, Vikunja, and Google Calendar APIs to generate a calendar of the upcoming week as well as a list of tasks that need to be done every week/month.
- (Optional) Change the localhost port by changing
8080in nginx's ports indocker-compose.yml, e.g.,- "1234:80". - (Optional) Change the PHP version by updating the number in
FROM php:8.0-fpminPHP.Dockerfile. - Create the
appdirectory at the root. This is where your PHP files will live. Follow the PHP package skeleton filesystem. At a minimum, create anindex.phpfile under/app/public/as this is nginx's entry point. cdinto theappdirectory and runphp composer.phar update. This will create thevendordirectory which contains the project's dependencies.- Run
docker-compose up -d --build. - Once running, go to
localhost:8000(unless you've changed the nginx port, in which case, replace8000with that number) in your browser. You should now be able to access your PHP files from theappdirectory.
This project requires env variables to work. In the /app/config/ directory, duplicate and/or rename the example.env file to .env and fill in the values.
You will need accounts for Paprika and Vikunja (can also be self-hosted), as well as the API URL for your bin data (the most important one!).
To use the Google Calendar API for this project, you will need to create a service account and generate the JSON private key.
Follow the 'Accessing Google APIs using Service account in Node.JS' walkthrough and rename the file to calendar-private-key.json
once downloaded and place in the /app/config/ directory.
In the command line run npm install and it will install all the dependencies from the package.json file.
esbuild is used as the JavaScript bundler. JavaScript files should be created in the /scripts/ root directory and each new file must be added to the entryPoints array.
entryPoints: [
"./scripts/scrip1.js",
"./scripts/scrip2.js",
...
],
For scripts to be used in the app, run npm run build where they will be bundled into the /app/public/scripts/ directory.