* Logseq
   Logseq is A privacy-first, open-source platform for knowledge sharing and management.

** Website
   https://logseq.com

** Setup development environment
If you're on Windows, use the [[#windows-setup][Windows setup]].

*** 1. Requirements

**** [[https://clojure.org/guides/getting_started][Java && Clojure]]

**** [[https://www.postgresql.org/download/][PostgreSQL]]

**** [[https://nodejs.org/en/][Node.js]]

*** 2. Creating a GitHub app:
    Follow this step: https://docs.github.com/en/free-pro-team@latest/developers/apps/creating-a-github-app.
    The ~User authorization callback URL~ should be:
    http://localhost:3000/auth/github

    Remember to download the ~private-key.pem~ which will be used for the next step.

*** 3. Add environment variables
       #+BEGIN_SRC sh
         export ENVIRONMENT="dev"
         export JWT_SECRET="4fa183cf1d28460498b13330835e80ab"
         export COOKIE_SECRET="10a42ca724e34f4db6086a772d787030"
         export DATABASE_URL="postgres://localhost:5432/logseq"
         export GITHUB_APP2_ID="78728"
         export GITHUB_APP2_KEY="xxxxxxxxxxxxxxxxxxxx"
         export GITHUB_APP2_SECRET="xxxxxxxxxxxxxxxxxxxx"
         # Replace your-code-directory with yours
         export GITHUB_APP_PEM="/your-code-directory/your-app.private-key.pem"
       #+END_SRC

*** 4. Start the clojure server
    #+BEGIN_SRC sh
      cd resources

      # 1. Download jar
      Go to https://github.com/logseq/logseq-internal/releases, download the logseq.jar and move it to the "resources" directory.

      # 2. run jar
      java -Duser.timezone=UTC -jar logseq.jar
    #+END_SRC

*** 5. Compile javascript
    #+BEGIN_SRC sh
      cd web
      yarn
      yarn watch
      open http://localhost:3000
    #+END_SRC

** Windows setup

*** 1. Required software
    Install clojure through scoop-clojure: https://github.com/littleli/scoop-clojure. You can also install [[https://nodejs.org/en/][Node.js]], [[https://yarnpkg.com/][Yarn]] and [[https://www.postgresql.org/download/][PostgreSQL]] through scoop if you want to.

*** 2. Setup PostgreSQL
    Make sure you have PostgreSQL running. You can check if it's running with ~pg_ctl status~ and use ~pg_ctl start~ to start it up.
    You'll also need to make a logseq DB in PostgreSQL. Do that with ~createdb logseq~.

*** 3. Setup the server
    Download [[https://gist.github.com/samfundev/98088dd76f67085f114c75493261aa3d][this little script]] that sets up the environment variables and runs ~cmd-clj -A:dev~.
    The ~GITHUB_APP_PEM~ variable in the script needs to be set with the correct directory for your system.
    Run that script in the repo and enter ~(go)~ into the interpreter.
