Skip to content

PerfectMach1ne/three-phase-calendar

Repository files navigation

three-phase-calendar

Important

One Calendar App to rule them all, One Calendar App to find them; One Calendar App to bring them all and in the darkness bind them.

Project overview

This is my final calendar project, i.e. I plan to continue working on it over the years and turn it into a calendar-journaling-note system that I would actually like to use.

I named it "Three Phase Calendar", because the foundational idea behind this project is that it it is supposed to be modal - i.e. the user has access to three modes or views, a calendar mode, a planner/tasklist mode, and a journal mode. The journal mode is supposed to be relatively freeform, whereas calendar mode - rigid and structured. The idea behind the "planner/tasklist" is something sorta inbetween, allowing the users to view their plans in different formats or work with their preferred one on a given day.

Milestones/feature ToDo list

CALENDARCOINS COLLECTED: 46📅🪙!!!

Java + postgres backend server

  • Dockerize your app properly
  • Basic HTTP server functionality.
  • Basic internal TaskEvent data handling.
  • Basic postgres database & connectivity setup.
  • TaskEvent database-side implementation.
  • HTTP query parameters/Filter implementation.
  • GET TaskEvent by ID request.
  • POST TaskEvent.
  • DELETE TaskEvent.
  • PUT TaskEvent (difficulty? easy peasy).
  • PATCH TaskEvent (difficulty? lemon squezy (not easy)).
  • Integrate event types (static, history, routine)
  • created_at & updated_at adder functions.
  • updated_at triggers.
  • Implement PeriodEvent & TextEvent tables.
  • Refactor "route"s to be "router"s instead.
  • Decouple database interfacing for routers from DBConnProvider (bridge or proxy of some kind)
  • Another stupid rework of Task and Timeblock schema.
  • GET PeriodEvent.
  • POST PeriodEvent.
  • PUT PeriodEvent.
  • DELETE PeriodEvent.
  • PUT TextEvent.
  • Make the QueryParam "validator strings" actually do something.
  • Basic user & "calendarspace" implementation (to separate events from each separate user & their calendar/journal/planner).
  • ForeignKey relation
  • GET /api/login?id={user_id} returning user's entire calendarspace.
  • For the love of all that lives, breathes and hates, please do your JWT token verification properly now that it works.
  • GET TextEvent.
  • POST TextEvent.
  • DELETE TextEvent.
  • PATCH TextEvent
  • Basic user login with no auth.
  • User authentication with JWT, bcrypt password encryption and OAuth 2.0.
  • openssl keygen bash script
  • Server-side database schema initialization and validation (possibly future migration features?).
  • postgres role for division of database access permissions.
  • [-] Substitute HttpServer with HttpsServer (#5).
  • #4

Tauri x Vue.js 3 desktop + mobile + web app

  • Basic calendar component structure (vCalendar dead project reimplementation).

  • Independent web app build. (Makefile or git subsomething?)

  • Refactor BigCalendar.

  • (OPTIONAL) Move most of the complex date handling to Rust "middleend".

  • Implement a dark/light mode toggle.

  • Implement a basic "casing" for calendar mode.

  • Make Rust "middleend" be able to talk to the appropriate backend server.

  • Make Rust backend and Vue learn how to talk to each other about JWT tokens and user id handling in requests.

  • Wire up all event creation, fetching and deletion methods

  • Correct the wiring between calendarspace and actual events (and make API server verify tokens)

  • Make events renderable as they should be.

  • Make rendered events be fully functional and additionally clickable.

  • Event popup with the editing and PUT/PATCH part.

  • Events don't collide with each other and extend on the right Vue div box when they last more than 1 day.

  • Implement a basic "casing" for planner mode.

  • Implement a basic "casing" for journal mode.

  • Planner mode and Journal mode can into calendarspace.

  • Journal prototype implenentation.

  • Planner prototype implementation.

  • Much to your horror, run npm tauri run android dev and figure out how to thus make it at least not immediately present itself as a nightmare that it will come out as with nothing currently done with phones in mind.

  • Refurbish calendar styling.

  • A settings popup/page.

  • Make the dark/light mode toggle alter styling.

  • Event creation forms.

  • User authentication GUI.

"Aronschaltung" study note organization module

  • Small steps: make new branch and manually insert beginning data
  • Tables for: notebook scan blobs, Markdown study notes, categories
  • Basic tpc GUI integration
  • Image blobs are viewable
  • Image blobs are scrollable & zoomable
  • You can select areas of image blobs...
  • ...and save notes or organizational data on selected areas.
  • Markdown note format reuses code of custom implementation from tpc Journal mode (ofc, first we must make it work lol)

C + ncurses CLI frontend

  • Integrate ncurses and libcurl into the build.
  • Implement day-of-the-week, monthday and hour label windows.
  • Implement weekday windows.
  • Implement Vim motions for navigating the calendar.
  • Implement libcurl data fetching.
  • Read only journal.

Project members

Chief Enterprise Officer: deceased

Chief Technology Officer: me but teal

Product Manager: me but orange

Frontend Software Engineer: me but pink and purple

Backend Software Engineer: me but purple

Site Reliability Engineer: me but gray

Quality Assurance Tester: me but pink

UI/UX Designer: me but blue and pink

Home Barista Maid: me but blue

Scrum Master: deceased

Agile Coach: deceased

Recruitment Manager: we don't need this guy.

About

One Calendar App to rule them all, One Calendar App to find them; One Calendar App to bring them all and in the darkness bind them.

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages