Hey selfhosters 👋

A few weeks ago I shared Ideon here and got great feedback that shaped a lot of what I’ve been working on since.

Since my last post here, Ideon crossed 200 stars on GitHub and I wanted to say thank you ❤. It means a lot to see people interested in what started as a side project. It motivated me to work on it literally every day since then.

For those who missed it: Ideon is a self-hosted visual workspace where you lay out everything about a project on an infinite canvas: notes, Git repos, code snippets, checklists, sketches, links and connect them together. Two containers, no external dependencies.

Since then, a lot has changed and I wanted to share an update.

Self-hosting got smoother. Docker permission issues with bind mounts are gone, build times are faster, and there’s a new GIT_ALLOWED_HOSTS env variable so you can whitelist your internal Git servers (Gitea, Forgejo, GitLab behind a VPN, etc.) without the SSRF filter blocking them.

Collaboration got real structure. There are now 4 project roles (Creator, Owner, Editor, Viewer), a Request Access workflow for private projects, and the canvas supports real-time multiplayer with conflict-free editing.

The canvas got a lot more usable. Keyboard navigation (arrow keys + vim keys), a command palette, freehand sketch blocks, drag-and-drop checklists with progress bars, markdown tables and task lists, emoji reactions on blocks, edge labels, and a bunch of stability fixes for large projects.

Where this is going next:

Right now Ideon lets you see your project. Git stats, issues, PRs show up on the canvas, but you can only look at them. For the v1 I want to move from visibility to control. Merge a PR from the canvas. Trigger a deployment. Restart a service. Turn the workspace into an actual cockpit where you operate your project, not just view it.

That’s the direction. Curious what this community thinks about it.

If you tried it and hit something rough, or if you’ve been waiting to try it, now’s a good time. Feedback always welcome.

GitHub: https://github.com/3xpyth0n/ideon

Docs: https://www.theideon.com/docs

    • RanchBranch@anarchist.nexus
      link
      fedilink
      English
      arrow-up
      3
      ·
      edit-2
      10 hours ago

      I might be stupid, but I didn’t want to run the install script because I try and run everything via compose files in Komodo.

      I don’t know if this helps, but this is what my compose looks like:
      (Side note, I just put the ENV values directly into the compose. I know this is not recommended, so I put the values to use if you actually mount the env_file like you’re supposed to. )

      services:  
      # ------- Ideon-App ------- 
        ideon-app:  
          image: ghcr.io/3xpyth0n/ideon:latest  
          container_name: ideon-app  
      
      # If you want to do it correctly, mount the ENV_FILE  
      #    env_file:  
      #      - ${ENV_FILE:-.env}  
      # If you want to do it janky, follow me  
          environment: #If you mount a ENV_File, only PUID and PGID are needed below.  
            PUID: 1000 # Optional: User ID for file ownership (default: 1001)  
            PGID: 1000 # Optional: Group ID for file ownership (default: 1001)  
      
      # From the ENV_FILE:  
            APP_PORT: 3001 # Host port to expose the app (container listens on 3000) # I had Homepage on port 3000 so I moved Ideon to 3001  
            APP_URL: http://mymachinesip:3001/ # Public base URL of the app (used for invitations and SSO auth)  
            TIMEZONE: UTC # Canonical timezone for server logs ONLY  
            ### Database  
            #SQLITE_PATH=./storage/dev.db # Override SQLite path (optional) # Note: PostgreSQL variables are not required in "development" mode, SQLite is used automatically (storage/dev.db).  
            DB_HOST: ideon-db # PostgreSQL host or service name (Docker Compose: ideon-db)  
            DB_PORT: 5432 # PostgreSQL port (default 5432)  
            DB_NAME: ideon # PostgreSQL database name  
            DB_USER: ideon # PostgreSQL username  
            DB_PASS: # I ran "openssl rand -base64 15" in the terminal to get PW # PostgreSQL password  
            SECRET_KEY: # I ran "openssl rand -hex 32" in the terminal to get PW  
      
          depends_on:  
            ideon-db:  
              condition: service_healthy  
          restart: unless-stopped  
          ports:  
            - 3001:3001 #"${APP_PORT:-3000}:${APP_PORT:-3000}" 
          volumes:  
            - /mnt/app/containers/ideon/app:/app/storage  
          healthcheck:  
            test:  
              ["CMD", "curl", "-f", "http://localhost:3001/api/health"] #["CMD", "curl", "-f", "http://localhost/:${APP_PORT:-3000}/api/health"]  
            interval: 5s  
            timeout: 5s  
            retries: 5  
            start_period: 10s  
      
      # ------- Ideon-DB ------- 
        ideon-db:  
          image: postgres:16-alpine  
          container_name: ideon-db  
          restart: unless-stopped  
          environment:  
            POSTGRES_USER: ideon # ${DB_USER}  
            POSTGRES_PASSWORD:  #same as DB_PASS   #${DB_PASS}  
            POSTGRES_DB: ideon # ${DB_NAME} 
          volumes:  
            - /mnt/app/containers/ideon/db:/var/lib/postgresql/data #I just hardmount everything  
          healthcheck:  
            test: ["CMD-SHELL", "pg_isready -U ideon -d ideon"] #["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"]  
            interval: 2s  
            timeout: 5s  
            retries: 5  
      

      So far I love it. I wanted to use it locally for some low level importance notes before I try to move more over and set it up with an actual mounted env file on a VPS.

      My only thought so far is that its not the greatest on mobile, but I’m really not certain what that would even look like. (Edit: I’m dumb. I didn’t close the sidebar. It actually looks pretty good on mobile. Ignore me.)

      • expyth0n@lemmy.worldOP
        link
        fedilink
        English
        arrow-up
        3
        ·
        10 hours ago

        yeah obviously that’s ok, glad you like it, and yes, didn’t really focus on a mobile mode yet, but it’s coming soon if demand were to grow

        • RanchBranch@anarchist.nexus
          link
          fedilink
          English
          arrow-up
          3
          ·
          9 hours ago

          Honestly, I was surprised at how well it works on mobile, once I collapsed the sidebar. (Thats my fault for not doing that earlier when I was trying it: I feel pretty silly)

          So far I’m genuinely loving it! I certainly hope the demand grows, cause its pretty fucking good so far. Thank you so much!

    • expyth0n@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      17 hours ago

      of course, there is better, i made an installer that does everything for you, downloads the yaml, the env.example creates secrets, prompts for hostname, port, etc. and finally starts the containers, of course you still have the choice to say no at every step, or edit the .env manually, everything is in the repo (I tried to post it here but seems to be blocked by lemmy’s firewall :-/ )