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
8080
in nginx's ports indocker-compose.yml
, e.g.,- "1234:80"
. - (Optional) Change the PHP version by updating the number in
FROM php:8.0-fpm
inPHP.Dockerfile
. - Create the
app
directory at the root. This is where your PHP files will live. Follow the PHP package skeleton filesystem. At a minimum, create anindex.php
file under/app/public/
as this is nginx's entry point. cd
into theapp
directory and runphp composer.phar update
. This will create thevendor
directory 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, replace8000
with that number) in your browser. You should now be able to access your PHP files from theapp
directory.
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.