Skip to content

A Github template repository for documenting technical skill-building challenges

License

Notifications You must be signed in to change notification settings

ggeerraarrdd/eevveerryyddaayy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

GitHub release Maintenance Codacy Badge codecov Quality Gate Status Renovate enabled

eevveerryyddaayy

A Github template repository for documenting technical skill-building challenges

Table of Contents

Note

ALL CONTENTS IN THIS REPO ARE FOR EDUCATIONAL PURPOSES ONLY.

Description

eevveerryyddaayy is a GitHub template repository. It is the templatized version of SQL Everyday, a personal skill-building challenge that necessitated an automated and streamlined framework to enable consistent daily practice and to manage an ever-growing coding portfolio.

eevveerryyddaayy automates many of the tedious manual work associated with the documentation process, such as handling file creation and organizing project materials. This frees up more time on what matters mostβ€”the actual learning.

eevveerryyddaayy.mp4

(SQL Everyday, an eevveerryyddaayy project. Scroll animation video created using Portfoliofy.)

Target Users

eevveerryyddaayy is intended for self-directed learners, such as:

  • Those committing to consistent technical skill practice.
  • Those seeking to track their progress for quick reference, knowledge retention and accountability.
  • Those wanting their record of daily practice organized into an accessible portfolio.
  • Those hoping to automate as much of the project management as possible.

Features

  • 🌐 Portfolio Builder - Transforms a Github repository into a coding portfolio website with README.md serving as the homepage
  • πŸ“ Automated File Management - Creates and organizes daily practice files
  • πŸ—‚οΈ Automated Indexing - Creates and maintains a table of contents of your files for quick reference and access
  • ✨ Dynamic Markdown Tables - Intelligently adjust column widths to accommodate new content, maintaining alignment and readability
  • πŸ“Š Daily Progress Tracking - Visualizes your learning journey in tabular form
  • πŸ“š Solution Repository - Showcases different approaches to programming challenges
  • ⚑ Jupyter Notebook Interface - Simplifies data entry through a form-like template

Project Structure

eevveerryyddaayy/
β”‚
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚
β”‚   β”œβ”€β”€ config/
β”‚   β”‚   └── __init__.py
β”‚   β”‚
β”‚   β”œβ”€β”€ forms/
β”‚   β”‚   └── __init__.py
β”‚   β”‚
β”‚   β”œβ”€β”€ handlers/
β”‚   β”‚   └── __init__.py
β”‚   β”‚
β”‚   β”œβ”€β”€ templates/
β”‚   β”‚   └── __init__.py
β”‚   β”‚
β”‚   β”œβ”€β”€ utils/
β”‚   β”‚   └── __init__.py
β”‚   β”‚
β”‚   └── app.py
β”‚   
β”œβ”€β”€ settings/
β”‚   β”œβ”€β”€ start.ipynb
β”‚   └── update.ipynb
β”‚   
β”œβ”€β”€ solutions/
β”‚
β”œβ”€β”€ tests/
β”‚
β”œβ”€β”€ EEVVEERRYYDDAAYY.ipynb
β”‚
β”œβ”€β”€ .github
β”œβ”€β”€ .vscode
β”œβ”€β”€ assets/
β”œβ”€β”€ docs/
β”œβ”€β”€ .gitignore
β”œβ”€β”€ .pylintrc
β”œβ”€β”€ LICENSE
β”œβ”€β”€ README.md
└── requirements.txt

Quick Start

  1. Create a repository from template

  2. Clone and set up locally

    # Clone the repository
    git clone https://github.com/ggeerraarrdd/eevveerryyddaayy.git
    
    # Set up environment and install dependencies
    cd eevveerryyddaayy
    python -m venv venv
    source venv/bin/activate  # On Windows use `venv\\Scripts\\activate`
    pip install -r requirements.txt
  3. Initialize project

    • Open settings/start.ipynb in VS Code.
    • Run all cells to initialize with default settings.
  4. Start using

    • Open EEVVEERRYYDDAAYY.ipynb.
    • Run the cells to display the form interface.
    • Fill in your first entry and click the submit button.

Local Setup

Prerequisites

  • Python 3.12
    • Not tested on other versions
  • VS Code as your development environment
  • Familiarity with Jupyter Notebooks
  • Jupyter extension for VS Code
    • Required for running notebook files
    • IMPORTANT: Install specifically version v2024.11.0 - not tested on any other version
    • From VS Code marketplace: Extensions icon β†’ βš™οΈ icon next to Jupyter β†’ Install Another Version β†’ Select v2024.11.0

Dependencies

  • See requirements.txt

Installation

  1. Follow Github's documentation on Creating a repository from a template

  2. Clone the new repository

    git clone your-repository-url
  3. Set up a Python virtual environment

    python3 -m venv venv
    source venv/bin/activate  # On Windows use `venv\Scripts\activate`
    pip install --upgrade pip
    pip install -r requirements.txt

Configuration

  1. Default settings

    Project Title:

    • The default title is "[ ] Everyday". You can choose a different title.

    Index Table:

    • The default index table has 5 columns. You can add a 6th column.
    • The default name of an activated sixth column is "NB". You can choose a different name.
    • The first column uses sequential numbering as default (e.g. "001", "002"). You can switch to date format.
    • The rows show no gaps when a day is missed. You can allow gaps to mark missed days for accountability.

    Form:

  2. Initialize project: Option 1: With Default Settings

    1. Open the start.ipynb notebook in the settings directory.
    2. Run all code cells by clicking Run All.
    3. Skip to #4.
  3. Initialize project: Option 2: With Custom Settings

    1. Open the start.ipynb notebook in the settings directory.

    2. Modify the code cell containing configuration settings (see #4 for details of options):

      # Project: Title
      PROJ_TITLE='[ ] Everyday'
      
      # Index Table: Extra Column
      NB=0
      NB_NAME='NB'
      
      # Index Table: Sequential Numbering
      SEQ_NOTATION=0
      
      # Index Table: Sequential Gaps
      SEQ_SPARSE=0
      
      # Form: Site Options
      SITE_OPTIONS=['Codewars', 'DataLemur', 'LeetCode']

      Configuration options explained

      **Project Title:**
      * Change `PROJ_TITLE` to your preferred project title.
      
      **Index Table:**
      * To add a 6th column: `NB=1`
      * To customize the 6th column name: `NB_NAME='Your Preferred Name'`
      * To switch to date format instead of sequential numbering: `SEQ_NOTATION=1`
      * To allow gaps in sequential numbering: `SEQ_SPARSE=1`
      
      **Form:**
      * Customize `SITE_OPTIONS` with your preferred sites as a list of strings.
      * If there is only one item in the list, that site becomes the only option and default value.
      
    3. Run all code cells by clicking Run All.

  4. Customize README.md

    After the project has been initialized, README.template.md should be the new README.md in the root directory. A copy of the previous README.md with the project documentation is stored in docs.

    Feel free to make changes to the new README.md, including the title and description of your project.

    ⚠️ IMPORTANT: The Index table, including its enclosing markdown comments, can be placed elsewhere but must not be modified in any other way or deleted.

Usage

  1. Open the project folder on VS Code, if not already.

  2. Open EEVVEERRYYDDAAYY.ipynb in the root directory.

  3. Execute the cell containing the python code or Run All to display the form interface.

  4. Fill in the fields and click the submit button.

  5. Update your portfolio.

    Using VS Code:

    • Click on the Source Control icon in the sidebar (or press Ctrl+Shift+G)
    • Review changed files in the "Changes" section
    • Hover over "Changes" and click the + to stage all changes (or stage individual files)
    • Enter a commit message like "Add daily entry #[number]"
    • Click the checkmark to commit
    • Click on the "..." menu and select "Push"

    Using Terminal:

    git add .
    git commit -m "Add daily entry #[number]"
    git push origin main
  6. πŸŽ‰ Congratulations! You're a day closer to achieving your goal!

Production Setup

This application primarily runs in the user's local environment using VS Code and Jupyter notebooks. However, the GitHub repository serves as the "production environment" for the portfolio aspect of the project.

System Administration

Configuration Updates

⚠️ Note: Configuration updates after initialization will be supported in a future version.

If you need to modify your project settings after initialization:

  • The upcoming feature will support configuration updates through update.ipynb in the settings directory.
  • This will allow you to change project settings without starting from scratch.
  • Currently, some settings like Index Table structure can only be set during initialization.

Author(s)

Version History

Release Notes

Initial Release

  • eevveerryyddaayy is the templatized version of SQL Everyday.

Future Work

  • Filter for the enhancement label in Issues.

License

Contributing

  • This project is not accepting contributions at this time.

Acknowledgments

  • Coeus

Screenshots

eevveerryyddaayy

eevveerryyddaayy

Frontispiece

  • TBD