1
3
Fork
You've already forked feedsin-space
1
No description https://feedsin.space
  • TypeScript 79.7%
  • Svelte 10.2%
  • HTML 6.4%
  • CSS 1.9%
  • JavaScript 1.4%
  • Other 0.4%
2026年06月24日 20:16:27 -04:00
.github/workflows Add playwright workflow 2025年10月06日 23:33:51 -04:00
bin Handle some linting issues 2026年06月07日 20:29:30 -04:00
drizzle Cleanup SQL. Wait to delete old keys 2025年10月30日 20:19:31 -04:00
e2e Handle redirects for non-ascii filenames 2025年11月08日 16:48:28 -05:00
fixtures Add feed list pagination 2025年10月20日 21:33:08 -04:00
import Add sql to update old db setup 2025年10月10日 22:06:48 -04:00
src Display title properly #10 2026年06月24日 20:16:27 -04:00
static Update favicon 2025年11月01日 10:02:49 -04:00
.dockerignore Add some bugfixes 2025年10月31日 19:23:31 +00:00
.env.example Update docs 2025年11月09日 18:04:38 -05:00
.gitignore Ignore directory 2025年11月06日 22:55:42 -05:00
.npmrc Add basic app with login 2025年06月20日 15:32:18 -04:00
docker-compose.development.yml Add docker setup for running pg 2026年06月21日 15:05:01 -04:00
docker-compose.yml Quiet docloader error logs 2026年06月21日 18:07:43 -04:00
Dockerfile Add production migration setup 2025年10月10日 21:53:00 -04:00
drizzle.config.ts Cleanup formatting 2025年10月30日 22:15:49 -04:00
eslint.config.js Add basic app with login 2025年06月20日 15:32:18 -04:00
mise.toml Add mise config 2026年06月21日 18:15:46 -04:00
package-lock.json Add some bad delivery handling 2026年06月21日 21:40:36 -04:00
package.json Add some bad delivery handling 2026年06月21日 21:40:36 -04:00
playwright.config.ts Add initial playwright test 2025年09月07日 22:15:07 -04:00
README.md Update docs 2025年11月09日 18:17:08 -05:00
svelte.config.js Cleanup formatting 2025年10月30日 22:15:54 -04:00
tsconfig.json Revert to base sveltekit setup 2025年09月15日 15:51:30 -04:00
vite.config.ts Bump a bunch of packages 2026年06月07日 19:51:03 -04:00
vitest-setup-client.ts Add mocking setup 2025年08月16日 22:19:35 -04:00
vitest.config.mts Add proper URL 2025年09月13日 18:53:54 -04:00
vitest.setup.ts Handle some linting issues 2026年06月07日 20:29:30 -04:00

feedsin.space!

This is the code for a service to host accounts on the fediverse that post messages from RSS feeds. It's currently being used to run feedsin.space.

Using the service

I run an instance of this code at feedsin.space. Before you can setup a feed, you need to send a fediverse message to @admin@feedsin.space with the word "help". This is an automated account, and it will respond with a link that you can use to authenticate with the service. Once you're logged in, you can create a feed. The feed requires a username and the feed URL. Once you've specified those, there will be an account at @username@feedsin.space. feedsin.space will scan the RSS feed every now and then, and if there's a new entry, it'll be posted as a status by the account.

Running the code

This is a node-based app so you will need to be comfortable with that or with using the docker-based setup. It's also almost entirely written in Typescript.

Hey I thought this was a rust-based application?

It was! I migrated it to node for a couple of reasons. As much as I like rust, I was experiencing some random challenges that were becoming more and more frustrating. I wanted to try Fedify, and I wanted to make it easier to maintain the codebase and to implement new features, so I decided to make the switch. The old code is still available.

Environment variables

There are several environment variables which you must set to run the service:

  • DATABASE_URL specifies the database, and will look something like postgres://username:password@host/dbname
  • INSTANCE_DOMAIN is the host name of the instance, for example: feedsin.space. NOTE: Once you set this, there's no system in place to change it!
  • LINK_BASE is used to generate links and should point to the app, for example https://feedsin.space. In theory, this would be something else if the codebase ever supports being run from a subdirectory or subdomain.

Database

The database backend uses postgres, and is built with drizzle. In theory it wouldn't be very difficult to add support for other databases.

You should be able to setup the database by running npm run db:migrate or npm run db:migrateprod (which works in production environments that might not have all the development packages installed).

Drizzle also has a neat web-based 'studio' tool you can access by running npm run db:studio.

Web and Background Jobs

The web app is built on SvelteKit, uses the Fedify AP framework to handle federation, and pg-boss to handle background jobs.

You can run the web app locally with npm run dev.

You can run background jobs locally with npx vite-node bin/run-jobs.ts.

You can get an idea of how to run things in production by taking a look at docker-compose.yml