Skip to content

About

Portfolio and Something else

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Personal Website & Grimoire

This repository hosts the personal website and automated CV of Ayan Ashraf, alongside a custom backend productivity tracker called Grimoire. The two parts have separate purposes and workflows: the website is a static public portfolio, while Grimoire is a hidden, authenticated Flask application for private journaling and productivity tracking.

🌐 Part 1: The Personal Website

The front-facing portfolio is a static website designed for personal, academic, and project presentation.

  • Frontend: index.html is the main landing page and can be opened directly in a web browser.
  • Automated CV: generate_pdf.py uses Playwright to render the portfolio content and automatically generate Ayan_Ashraf_CV.pdf.

🔮 Part 2: Grimoire (The Hidden Backend)

Grimoire is a private Flask web application for maintaining a structured productivity and research journal. Its core features include:

  • Tracker: A calendar-based workflow for daily entries, archived days, and journal editing.
  • Tag and color system: Customizable priority tags with persistent colors, ordering, and historical snapshots for consistent visualization.
  • Authentication: User registration, login, logout, and credential updates protect the private tracker.

v2.0.0 Modular Architecture

The v2.0.0 backend separates application setup, persistence, and routes:

  • app.py: Flask entry point, configuration, Blueprint registration, and tunnel lifecycle management.
  • database.py: SQLite connections, WAL configuration, schema initialization, and database helpers.
  • routes/auth.py: Flask Blueprint containing authentication routes.
  • routes/tracker.py: Flask Blueprint containing the dashboard, journal, tag, credential, and API routes.
  • tests/: Pytest fixtures and authentication tests.

💻 Developer Guide

1. Environment Setup

Create and activate a virtual environment before installing dependencies:

python -m venv venv
.\venv\Scripts\Activate.ps1

Install dependencies in separate runtime and development groups:

  1. Runtime dependencies

    pip install -r requirements.txt
  2. Playwright engine required by the CV generator

    python -m playwright install chromium
  3. Python development tools

    pip install -r requirements-dev.txt
  4. JavaScript linting tools

    npm install

2. Local Development

Frontend Website

Open index.html directly in a web browser. The static portfolio does not require a development server.

Grimoire Backend

  1. Initialize the SQLite database:

    python init_db.py
  2. Start the Flask server:

    flask run

    Alternatively, run python app.py to use the application entry point and its tunnel lifecycle behavior.

  3. Access the application at http://127.0.0.1:5000.

3. Testing & Strict Static Analysis

The Grimoire backend enforces strict linting and typing. Run these checks before committing:

  • Tests:

    pytest tests/
  • Typing: Strict typing is enforced with mypy.

    mypy .
  • Formatting: Ruff enforces the 100-character line limit.

    ruff check .
  • JavaScript linting: ESLint enforces let/const usage and flags unused variables.

    eslint static/js/

4. AI Assistant Context

AI coding assistants automatically read .github/copilot-instructions.md. That file defines the Grimoire architectural boundaries, strict Python typing and linting rules, JavaScript conventions, and testing expectations, so these rules do not need to be repeated manually in each prompt.

About

Portfolio and Something else

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages