0

Screenshot / Code Snippet

Stack Overflow user infortion displayed on Obisidian Digital Garden plugin plus Eleventy Serverless generated webpage

About

This is a proof of concept / "minimal, complete, verifiable example" of adding the Eleventy Serverless plugin to an instance of Obisidian Digital Garden's (ODG) template repo for using a Stack Overflow account to log in.

ODG is a community plugin for Obsidian, a cross-platform note-taking app that uses markdown for note files.

License

TBD

Download

Platform

Web Browsers: Chrome, Firefox, Safari. Other web browsers like Brave and Edge might work too.

Contact

I created this app using several tools.

Code

  • GitHub
  • Netlify
  • Eleventy
  • Node.js
  • Nunjucks
  • JavaScript
  • HTML
  • SCSS
  • CSS
  • SVG

Highlights

The repository https://github.com/rubenrivera/demo-dg-oauth could be forked, but if you want to do "from scratch", below are the "not so broad" steps:

  1. Deploy a site using the Deploy to Netlify button from the Obsidian Digital Garden community plugin documentation. If you want to run this from anywhwere, grab the site URL.
  2. Register the app on stackapps.com. Get the client ID, client secret, and key. For local development/testing, set localhost as the OAuth domain.
  3. Add the client id, client secret and key from the previous step as environment variables to the site settings on Netlify.
  4. Add the Eleventy Serverless plugin to userSetup.js
  5. Add the authentication files from the Eleventy Serverless OAuth demo (Netlify/functions/dynamic/index.js, Netlify/functions/Utils/*, Netlify/functions/auth-before.js and Netlify/functions/auth-callback.js)
  6. Add index.njk and secure.njk from the Eleventy Serverless OAuth demo to /src/site/.
  7. Edit the files from the previous steps.
  8. Edit .gitignore and netlify.toml.
  9. Install the modules required by the Eleventy Serverles OAuth demo (cookie, simple-outh2 and node-fetch). Tip use npm ci instead of npm install / npm i.
  10. To run locally, install netlify-cli, then run netlify link once to run the serverless functions on Netlify servers. Then run netlify dev on the project root directory to build and run a local web hosting server. Wait for the Netlify CLI to give a message including the URL to be used, i.e., http://localhost:8888.
    • I used Chrome for testing locally. Safari blocks cookies despite setting a Safari profile to allow cookies and tracking. My other Safari profiles with no settings changes related to cookies / privacy work fine when opening the website from the Netlify servers.
  11. [Workaround] An error occurs when the Serverless function tries to write the favicon using the ODG src/site/_includes/layouts/index.njk / src/site/_includes/layouts/note.njk templates for src/site/index.njk and src/site/secure.njk. Edit /src/site/_includes/components/pageheader.njk to add a condition to "favicons" run only on the build phase (not when generating pages by the Serverless functions).
  12. [Workaound] An error occurs when the dynamic Serverless function tries to parse markdown notes, including images. Added the parts of .eleventy.js and the property copy {from: ".cache", to: "tmp/.cache" } to `netlify/functions/dynamic/index.js

Issues

  • I am having problems testing the dynamic serverless functions locally. I have not found how to reproduce an error thrown by the deployment process to the production run by Netlify with the "basic" local development environment. I think that I might have to use a local user without writing permissions to the local directory /dist and use it to netlify dev.

Related

Other posts from me

Other websites that use Stack Overflow / Stack Exchange OAuth

Update

  1. Moved index.njk and secure.njk to src/site/dynamic directory.
  2. Moved login/logout buttons to a custom component for the header slot.
  3. Moved "References" section to a custom component for the afterContent slot.
  4. Added notes from the Obsidian Digital Garden plugin repository's test vault.
  5. Added cookie consent by adapting a few files taken from https://github.com/osano/cookieconsent.
1

0

You must log in to answer this question.

Browse other questions tagged .