{"id":32373973,"url":"https://github.com/fccview/jotty","last_synced_at":"2026-04-01T19:43:39.871Z","repository":{"id":309357825,"uuid":"1035958830","full_name":"fccview/jotty","owner":"fccview","description":"Lightweight but powerful alternative for managing your personal, file based, notes and checklists. ","archived":false,"fork":false,"pushed_at":"2026-01-18T14:04:20.000Z","size":55585,"stargazers_count":1424,"open_issues_count":25,"forks_count":69,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-01-18T17:26:41.030Z","etag":null,"topics":["checklists","homelab","notes","opensource","selfhosted","task-manager"],"latest_commit_sha":null,"homepage":"https://jotty.page","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fccview.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-11T10:55:06.000Z","updated_at":"2026-01-18T14:23:26.000Z","dependencies_parsed_at":"2025-08-11T13:14:57.025Z","dependency_job_id":"95fc237b-e20e-404d-970b-bf0d1380bb46","html_url":"https://github.com/fccview/jotty","commit_stats":null,"previous_names":["fccview/rwmarkable","fccview/jotty"],"tags_count":46,"template":false,"template_full_name":null,"purl":"pkg:github/fccview/jotty","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fccview%2Fjotty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fccview%2Fjotty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fccview%2Fjotty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fccview%2Fjotty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fccview","download_url":"https://codeload.github.com/fccview/jotty/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fccview%2Fjotty/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28550463,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T20:59:07.572Z","status":"ssl_error","status_checked_at":"2026-01-18T20:59:02.799Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["checklists","homelab","notes","opensource","selfhosted","task-manager"],"created_at":"2025-10-24T22:01:37.245Z","updated_at":"2026-04-01T19:43:39.855Z","avatar_url":"https://github.com/fccview.png","language":"TypeScript","funding_links":["https://www.buymeacoffee.com/fccview"],"categories":["others","TypeScript"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"public/app-icons/logos/logo-animated.svg\" alt=\"Jotty Logo\" width=\"100\"\u003e \n  \u003cbr /\u003e\n  \u003ch1 align=\"center\"\u003ejotty·page\u003c/h1\u003e\u003cbr/\u003e\n\u003c/p\u003e\n\nA self-hosted app for your checklists and notes.\n\n[jotty·page](https://jotty.page) is a lightweight alternative for managing your personal checklists and notes. It's extremely easy to deploy, keeps all your data on your own server and allows you to encrypt/decrypt your notes for your personal peace of mind.\n\n\u003cp align=\"center\"\u003e\u003ci\u003eex rwMarkable\u003c/i\u003e\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://discord.gg/invite/mMuk2WzVZu\"\u003e\n    \u003cimg width=\"40\" src=\"public/repo-images/discord.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.reddit.com/r/jotty\"\u003e\n    \u003cimg width=\"40\" src=\"public/repo-images/reddit.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://t.me/jottypage\"\u003e\n    \u003cimg width=\"40\" src=\"public/repo-images/telegram.svg\"\u003e\n  \u003c/a\u003e\n  \u003cbr /\u003e\n  \u003cbr /\u003e\n  \u003ci\u003eJoin our communities\u003c/i\u003e\n  \u003cbr /\u003e\n\u003c/p\u003e\n\n---\n\n\u003cbr /\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cp align=\"center\"\u003e\n    \u003cem\u003eClean, intuitive interface for managing your checklists and tasks.\u003c/em\u003e\n  \u003c/p\u003e\n  \u003cimg src=\"public/app-screenshots/notes-view-dark.png\" alt=\"Notes Home View\" width=\"400\" style=\"border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1);\"\u003e\n\n  \u003cp align=\"center\"\u003e\n    \u003cem\u003eRich text editor for notes.\u003c/em\u003e\n  \u003c/p\u003e\n  \u003cimg src=\"public/app-screenshots/note-markdown.png\" alt=\"Note Editor\" width=\"400\" style=\"border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); margin: 0 8px;\"\u003e\n\u003c/div\u003e\n\n## Quick nav\n\n- [Features](#features)\n- [Getting Started](#getting-started)\n  - [Docker Compose (Recommended)](#docker-compose)\n  - [Initial Setup](#initial-setup)\n- [Data Storage](#data-storage)\n- [Versioning Scheme](#versioning)\n- [Encryption](#encryption)\n- [API](#api)\n- [Shortcuts](#shortcuts)\n- [Single Sign-On (SSO) with OIDC](#single-sign-on-sso-with-oidc)\n- [Multi-Factor Authentication (MFA)](#multi-factor-authentication)\n- [Translations](#translations)\n- [Custom Themes and Emojis](#custom-themes-and-emojis)\n\n\u003cp align=\"center\"\u003e\n  \u003cbr /\u003e\n  \u003ca href=\"https://www.buymeacoffee.com/fccview\"\u003e\n    \u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" alt=\"Buy me a coffee\" width=\"150\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003ca id=\"features\"\u003e\u003c/a\u003e\n\n## Features\n\n- **Checklists:** Create task lists with drag \u0026 drop reordering, progress bars, and categories. Supports both simple checklists and advanced task projects with Kanban boards and time tracking.\n- **Rich Text Notes:** A clean WYSIWYG editor for your notes, powered by TipTap with full Markdown support and syntax highlighting.\n- **Sharing:** Share checklists or notes with other users on your instance, including public sharing with shareable links.\n- **File-Based:** No database needed! Everything is stored in simple Markdown and JSON files in a single data directory.\n- **User Management:** An admin panel to create and manage user accounts with session tracking.\n- **Customisable:** 14 built-in themes plus custom theme support with custom emojis and icons.\n- **Encryption:** Full on PGP encryption, read more about it in [howto/ENCRYPTION.md](howto/ENCRYPTION.md)\n- **API Access:** Programmatic access to your checklists and notes via REST API with authentication.\n- **PWA** Jotty doesn't have a native app, but it's built mobile first. Once installed the PWA on your device it will feel like you installed it from the app store. There's also partial offline caching, as long as you visited a page while online Jotty will allow you to re-visit it while offline. At the moment there's no current support for offline CRUD operation.\n\n\u003ca id=\"getting-started\"\u003e\u003c/a\u003e\n\n## Getting Started\n\nMy recommended way to run `jotty·page` is with Docker. You can also use:\n\n- The [Proxmox community script](https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/jotty.sh) for Proxmox VE\n- The [Unraid template](howto/UNRAID.md) for Unraid Community Applications\n\n\u003ca id=\"docker-compose\"\u003e\u003c/a\u003e\n\n### Docker Compose (Recommended)\n\n1.  Create a `docker-compose.yml` file:\n\n    **📖 For advanced settings and more information about how the docker compose file works and what these variables do, please read [howto/DOCKER.md](howto/DOCKER.md)**\n\n    ```yaml\n    services:\n      jotty:\n        image: ghcr.io/fccview/jotty:latest\n        container_name: jotty\n        user: \"1000:1000\"\n        ports:\n          - \"1122:3000\"\n        volumes:\n          - ./data:/app/data:rw\n          - ./config:/app/config:rw\n          - ./cache:/app/.next/cache:rw\n        restart: unless-stopped\n        environment:\n          - NODE_ENV=production\n    ```\n\n2.  Create the data directory and set permissions:\n\n    ```bash\n    mkdir -p config data/users data/checklists data/notes data/sharing data/encryption cache\n    sudo chown -R 1000:1000 data/\n    sudo chown -R 1000:1000 config/\n    sudo chown -R 1000:1000 cache/\n    ```\n\n    **Note:** The cache directory is optional. If you don't want cache persistence, you can comment out the cache volume line in your `docker-compose.yml`.\n\n3.  Start the container:\n\n    ```bash\n    docker compose up -d\n    ```\n\nThe application will be available at `http://localhost:1122`.\n\n\u003ca id=\"initial-setup\"\u003e\u003c/a\u003e\n\n### Initial Setup\n\nOn your first visit, you'll be redirected to `/auth/setup` to create your admin account if SSO is disabled, otherwise you'll be prompted to sign in via your choosen SSO provider.\n\nOnce that's done, you're ready to go! First user will be admin by default.\n\n\u003ca id=\"data-storage\"\u003e\u003c/a\u003e\n\n## Data Storage\n\n`jotty·page` uses a simple file-based storage system inside the `data/` directory.\n\n- `data/checklists/`: Stores all checklists as `.md` files.\n- `data/notes/`: Stores all notes as `.md` files.\n- `data/users/`: Contains `users.json` and `sessions.json`.\n- `data/sharing/`: Contains `shared-items.json`.\n- `data/encryption/`: Contains all public/private keys for all users.\n\n**Make sure you back up the `data` directory!**\n\n\u003ca id=\"versioning\"\u003e\u003c/a\u003e\n\n## Versioning Scheme\n\nThis project uses a `[STABLE].[FEATURE].[FIX]` versioning scheme, not strict [SemVer](https://semver.org/). As a product (not a package), this format makes more sense for my specific release cycle.\n\nMy format is `1.10.1`, which breaks down as:\n\n- **`1.x.x` (Stable):** The `1` represents the current stable generation. I will only change this (e.g., to `2.0.0`) for a complete rewrite or a fundamental shift in the product or seriously breaking changes.\n\n- **`x.10.x` (Feature):** This is the main release number. I increment this for new features, code refactors, or significant changes (e.g., `1.9.0` -\u003e `1.10.0`). This is the equivalent of a SemVer `MINOR` bump.\n\n- **`x.x.1` (Fix):** This is incremented _only_ for hotfixes, bug-fix-only and very minor feature releases (e.g., `1.10.0` -\u003e `1.10.1`). This is the equivalent of a SemVer `PATCH` bump.\n\n### A Note on \"Breaking\" Changes\n\nA **Feature** release (like `1.10.0`) may include major backend or data structure changes. When this happens, **I will always provide an automatic migration script** that runs on first launch to update your data seamlessly.\n\nBecause the migration is automatic, I do not consider this a \"breaking\" change that requires a `2.0.0` version.\n\nI will always detail these migrations in the release notes. I _highly recommend_ you **back up your data** before any feature update, just in case.\n\n\u003ca id=\"supported-markdown\"\u003e\u003c/a\u003e\n\n## SUPPORTED MARKDOWN\n\n`jotty·page` supports GitHub Flavored Markdown (GFM) and some custom syntax for complex functionality.\n\n📖 **For the complete MARKDOWN documentation, see [howto/MARKDOWN.md](howto/MARKDOWN.md)**\n\n\u003ca id=\"encryption\"\u003e\u003c/a\u003e\n\n## ENCRYPTION\n\n`jotty·page` uses industry standard PGP encryption.\n\n📖 **For the complete ENCRYPTION documentation, see [howto/ENCRYPTION.md](howto/ENCRYPTION.md)**\n\n\u003ca id=\"api\"\u003e\u003c/a\u003e\n\n## API\n\n`jotty·page` includes a REST API for programmatic access to your checklists and notes. This is perfect for:\n\n- **Automation:** Create tasks from external systems\n- **Integrations:** Connect with other tools and services\n- **Scripts:** Automate repetitive tasks\n- **Dashboards:** Build custom interfaces\n\n📖 **For the complete API documentation, see [howto/API.md](howto/API.md)**\n\n\u003ca id=\"shortcuts\"\u003e\u003c/a\u003e\n\n## SHORTCUTS\n\n`jotty·page` supports a wide range of keyboard shortcuts to help you navigate and edit more efficiently without leaving the keyboard. They are divided into two main categories: global shortcuts that work anywhere in the app, and editor-specific shortcuts that work when you are writing a note.\n\n📖 **For the complete SHORTCUTS documentation, see [howto/SHORTCUTS.md](howto/SHORTCUTS.md)**\n\n\u003ca id=\"single-sign-on-sso-with-oidc\"\u003e\u003c/a\u003e\n\n## Single Sign-On (SSO) with OIDC\n\n`jotty·page` supports any OIDC provider (Authentik, Auth0, Keycloak, Okta, Google, EntraID, etc.)\n\n📖 **For the complete SSO documentation, see [howto/SSO.md](howto/SSO.md)**\n\n\u003ca id=\"multi-factor-authentication\"\u003e\u003c/a\u003e\n\n## Multi-Factor Authentication (MFA)\n\n`jotty·page` supports MFA, this needs to be enabled in settings -\u003e profile\n\n📖 **For the complete MFA documentation, see [howto/MFA.md](howto/MFA.md)**\n\n\u003ca id=\"translations\"\u003e\u003c/a\u003e\n\n## Translations\n\n`jotty·page` can be translated in multiple languages, all translations are community driven and can be found in the [app/\\_translations](app/_translations) directory.\n\n📖 **For the complete translations documentation, see [howto/TRANSLATIONS.md](howto/TRANSLATIONS.md)**\n\n\u003ca id=\"custom-themes-and-emojis\"\u003e\u003c/a\u003e\n\n## Custom Manifest\n\nYou can completely customize your PWA by creating an override manifest file. This allows you to change the app name, description, icons, colors, and more. Custom themes and emojis can be managed through the admin UI.\n\n📖 **For the complete customisation documentation, see [howto/CUSTOMISATIONS.md](howto/CUSTOMISATIONS.md)**\n📖 **For better understanding on how the PWA works see [howto/PWA.md](howto/PWA.md)**\n\n## Community shouts\n\nI would like to thank the following members for raising issues and help test/debug them!\n\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/davehope\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/5435716?s=96\u0026v=4\u0026size=100\"\u003e\u003cbr /\u003edavehope\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/seigel\"\u003e\u003cimg width=\"100\" height=\"100\"  src=\"https://avatars.githubusercontent.com/u/15181?v=4\u0026size=100\"\u003e\u003cbr /\u003eseigel\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/mariushosting\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/37554361?v=4\u0026size=100\"\u003e\u003cbr /\u003emariushosting\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/Isotop7\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/8883656?v=4\u0026size=100\"\u003e\u003cbr /\u003eIsotop7\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/gavdgavd\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/7753641?v=4\u0026size=100\"\u003e\u003cbr /\u003egavdgavd\u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/IGOLz\"\u003e\u003cimg width=\"100\" height=\"100\" alt=\"IGOLz\" src=\"https://avatars.githubusercontent.com/u/24594920?s=96\u0026v=4\u0026size=100\"\u003e\u003cbr/\u003eIGOLz\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/floqui-nl\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/73650390?s=96\u0026v=4\u0026size=100\"\u003e\u003cbr /\u003efloqui-nl\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/fruiz1972\"\u003e\u003cimg width=\"100\" height=\"100\" alt=\"fruiz1972\" src=\"https://avatars.githubusercontent.com/u/183622648?v=4\u0026size=100\"\u003e\u003cbr/\u003efruiz1972\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/Sku1ly\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/45756272?s=96\u0026v=4\u0026size=100\"\u003e\u003cbr /\u003eSku1ly\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/ItsNoted\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/57927413?s=96\u0026v=4\u0026size=100\"\u003e\u003cbr /\u003eItsNoted\u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/red-bw\"\u003e\u003cimg width=\"100\" height=\"100\" alt=\"red-bw\" src=\"https://avatars.githubusercontent.com/u/76931972?s=96\u0026v=4\u0026size=100\"\u003e\u003cbr/\u003ered-bw\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/kn0rr0x\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/13623757?s=96\u0026v=4\u0026size=100\"\u003e\u003cbr /\u003ekn0rr0x\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/mroovers\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/108073583?u=f28735093a4131be5876d8bfcee38e18d7293a13\u0026v=4\u0026size=100\"\u003e\u003cbr /\u003emroovers\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/Ryderjj89\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/1996734?u=b64c6cdaebfefe6dacfe4213663df60bb22ccf5f\u0026v=4\u0026size=100\"\u003e\u003cbr /\u003eRyderjj89\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/spaghetti-coder\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/4891777?v=4\u0026size=100\"\u003e\u003cbr /\u003espaghetti-coder\u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/hurleyy\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/12866334?v=4\u0026size=100\"\u003e\u003cbr /\u003ehurleyy\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/schneider-de-com\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/1329171?s=100\"\u003e\u003cbr /\u003eschneider-de-com\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/zolakt\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/1048531?s=100\"\u003e\u003cbr /\u003ezolakt\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/Justus0405\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/143542687?s=100\"\u003e\u003cbr /\u003eJustus0405\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/mgrimace\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/55518507?s=100\"\u003e\u003cbr /\u003emgrimace\u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/bluegumcity\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/142639670?v=4\u0026size=100\"\u003e\u003cbr /\u003ebluegumcity\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/4rft5\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/74219775?s=100\u0026v=4\"\u003e\u003cbr /\u003e4rft5\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/godsking121\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/140371467?s=100\u0026v=4\"\u003e\u003cbr /\u003egodsking121\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/pbuzdygan\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/183727077?s=100\u0026v=4\"\u003e\u003cbr /\u003epbuzdygan\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/rcallison\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/535687?s=100\u0026v=4\"\u003e\u003cbr /\u003ercallison\u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/BaccanoMob\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/82655889?s=100\u0026v=4\"\u003e\u003cbr /\u003eBaccanoMob\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/DaxtonD\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/96708688?s=100\u0026v=4\"\u003e\u003cbr /\u003eDaxtonD\u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"20%\"\u003e\n        \u003ca href=\"https://github.com/wein-geist\"\u003e\u003cimg width=\"100\" height=\"100\" src=\"https://avatars.githubusercontent.com/u/11159094?v=4\"\u003e\u003cbr /\u003ewein-geist\u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=fccview/jotty\u0026type=date\u0026legend=top-left)](https://www.star-history.com/#fccview/jotty\u0026type=date\u0026legend=top-left)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffccview%2Fjotty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffccview%2Fjotty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffccview%2Fjotty/lists"}