diff --git a/.gitignore b/.gitignore
index 75e0f84..a358c79 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,43 @@
.DS_Store
**/.DS_Store
+
+.editorconfig
+
+# Bundler cache
+.bundle
+vendor
+Gemfile.lock
+
+# Jekyll cache
+.jekyll-cache
+_site
+
+build
dist
-.editorconfig
\ No newline at end of file
+# RubyGems
+*.gem
+
+# NPM dependencies
+node_modules
+package-lock.json
+
+# IDE configurations
+.idea
+.vscode
+
+# Misc
+assets/js/dist
+.editorconfig
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# netlify
+.netlify
+
+.svelte-kit
\ No newline at end of file
diff --git a/nostr-followback/README.md b/nostr-followback/README.md
new file mode 100644
index 0000000..eb9a694
--- /dev/null
+++ b/nostr-followback/README.md
@@ -0,0 +1,10 @@
+# Nostr Reciprocal Follow
+
+Check who does and does not follow you back on Nostr.
+
+## ToDo
+
+- Create this but without SvelteKit (just Vite + Svelte)
+- Polish the proof-of-concept code
+- Configure Vite for the miniapp to be loaded in the article's url as base
+- Save followbackers and not followbackers in lists to see details
diff --git a/nostr-followback/package.json b/nostr-followback/package.json
new file mode 100644
index 0000000..0fee7e0
--- /dev/null
+++ b/nostr-followback/package.json
@@ -0,0 +1,21 @@
+{
+ "name": "test-nostr-reciprocal",
+ "version": "0.0.1",
+ "private": true,
+ "scripts": {
+ "dev": "vite dev",
+ "build": "vite build",
+ "preview": "vite preview"
+ },
+ "devDependencies": {
+ "@sveltejs/adapter-auto": "^3.0.0",
+ "@sveltejs/kit": "^2.0.0",
+ "@sveltejs/vite-plugin-svelte": "^3.0.0",
+ "svelte": "^4.2.7",
+ "vite": "^5.0.3"
+ },
+ "type": "module",
+ "dependencies": {
+ "@nostr-dev-kit/ndk": "^2.7.1"
+ }
+}
diff --git a/nostr-followback/src/app.html b/nostr-followback/src/app.html
new file mode 100644
index 0000000..77a5ff5
--- /dev/null
+++ b/nostr-followback/src/app.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+ %sveltekit.head%
+
+
+
%sveltekit.body%
+
+
diff --git a/nostr-followback/src/lib/index.js b/nostr-followback/src/lib/index.js
new file mode 100644
index 0000000..856f2b6
--- /dev/null
+++ b/nostr-followback/src/lib/index.js
@@ -0,0 +1 @@
+// place files you want to import through the `$lib` alias in this folder.
diff --git a/nostr-followback/src/routes/+page.svelte b/nostr-followback/src/routes/+page.svelte
new file mode 100644
index 0000000..6943495
--- /dev/null
+++ b/nostr-followback/src/routes/+page.svelte
@@ -0,0 +1,121 @@
+
+
+
+{/if}
diff --git a/nostr-followback/static/favicon.png b/nostr-followback/static/favicon.png
new file mode 100644
index 0000000..825b9e6
Binary files /dev/null and b/nostr-followback/static/favicon.png differ
diff --git a/nostr-followback/svelte.config.js b/nostr-followback/svelte.config.js
new file mode 100644
index 0000000..348fa32
--- /dev/null
+++ b/nostr-followback/svelte.config.js
@@ -0,0 +1,13 @@
+import adapter from '@sveltejs/adapter-auto';
+
+/** @type {import('@sveltejs/kit').Config} */
+const config = {
+ kit: {
+ // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
+ // If your environment is not supported or you settled on a specific environment, switch out the adapter.
+ // See https://kit.svelte.dev/docs/adapters for more information about adapters.
+ adapter: adapter()
+ }
+};
+
+export default config;
diff --git a/nostr-followback/vite.config.js b/nostr-followback/vite.config.js
new file mode 100644
index 0000000..bbf8c7d
--- /dev/null
+++ b/nostr-followback/vite.config.js
@@ -0,0 +1,6 @@
+import { sveltekit } from '@sveltejs/kit/vite';
+import { defineConfig } from 'vite';
+
+export default defineConfig({
+ plugins: [sveltekit()]
+});