### vintagecoding.net

- [x] Ensure a consistent design & UX aesthetic --- v0.1.0
  - [ ] Sensible CSS class names for a modular styling approach --- v0.2.0

- [ ] Convert db_functions.php queries/statements into prepared SQL for protection against SQL injection --- v0.2.0

- [ ] Email Handler:
  - [ ] Email users subscribed to author or tag whenever a new article is posted. --- v0.3.0
  - [ ] Email me whenever a user requests a role change. --- v0.3.0

#### Systems Interfaces
- [x] Admin panel (manage articles & accounts) --- v0.2.0

- [ ] Implement a notification modal system for handling error and success messages. --- v0.2.0

- [ ] Accounts:
  #### Account CRUD --- account_functions.php
  - [x] Self Auth Level (a simple get, though should always get from the DB since that'll reflect the latest changes.) --- v0.1.0
  - [x] Modify Self ---v0.1.0
  - [x] Delete Self (user opt-out of the deletion of articles they've written.) --- v0.1.0
  - [x] Create User (either new user or admin or higher auth) --- v0.1.0
    - [ ] Implement OAuth accounts --- v0.2.0
  - [x] Login --- v0.1.0
    - [ ] Implement OAuth 2.0 accounts --- v0.2.0
  - [x] Modify User (requires auth) --- v0.2.0
  - [x] Delete User --- v0.2.0
  - [x] Get User Admin (requires auth, shows limited information for privacy) --- v0.2.0
  - [x] Get Users (requires auth) --- v0.2.0
  - [x] Create Users (requires auth) --- v0.2.0
  - [x] Delete Users --- v0.2.0
  - [ ] Get User (for public facing account page) --- v0.2.0

  #### Analytics on Accounts (requires auth) --- account_analytic_functions.php
  - [ ] Get Users by Creation --- v0.3.0
  - [ ] Get Users by Articles Written --- v0.3.0
  - [ ] Get Users by Last Login --- v0.3.0
  - [ ] Get Users by Is Active --- v0.3.0

  #### Account Systems Interfaces
  - [x] Sign Up & Login Form --- v0.1.0
  - [x] Account Settings (requires login, self) --- v0.1.0
  - [ ] Account Page (of each user, hidden by default) --- v0.2.0
    - [ ] Allow for user customization of their account page (colors, layout, maybe even let them have their own CSS file to make changes) --- v0.2.0

- [ ] Articles:
  #### Article CRUD --- article_functions.php
  - [x] Create Article (requires contributor or higher) --- v0.1.0
    - [x] Prompt for tags
    - [x] Use account information to populate author information
  - [x] Get Article by ID --- v0.1.0
  - [x] Get Articles by ID --- v0.1.0
  - [x] Get Articles by Recency --- v0.1.0
  - [x] Get Articles by Tag --- v0.1.0
  - [x] Delete Article by ID --- v0.1.0
  - [x] Delete Articles by Author (for account deletion) --- v0.1.0
  - [ ] Draft/unpublished status --- v0.2.0
  - [ ] Update Article by ID (required to be the author updating) --- v0.2.0
  - [ ] Get Articles by Author --- v0.2.0
  - [ ] Sort / filter system --- v0.2.0

  #### Article System Interface
  - [ ] Convert articles.php layout to a grid, to display a left hand column with a search/filtering system or table of contents. --- v0.2.0
  - [ ] Advanced markdown editor or upload markdown, with media upload support (images & code files, requires contributor or higher auth) --- v0.3.0

  ### Unplanned but implemented
  - [ ] Vim motions for navigation
  - [ ] Terminal access? security challenge.
  - Image cropper. 12 hoursish, learned a lot though. Opted not to use cropper.js or cropper, wanted the challenge. Needs to be refactored/rewritten. --- v0.1.0 @ 29/3/2025

Test
