No description
This repository has been archived on 2024-05-13. You can view files and clone it, but cannot push or open issues or pull requests.
Find a file
2024-02-25 01:13:41 +01:00
.github Update Sharp 2024-02-25 01:13:41 +01:00
.husky Update Husky 2024-02-25 01:13:41 +01:00
.reuse Update licence to AGPL-3.0-only 2023-09-02 21:57:00 +02:00
assets Add copyright notices 2023-09-02 21:56:45 +02:00
LICENSES Update licence to AGPL-3.0-only 2023-09-02 21:57:00 +02:00
public Disable indexing 2024-02-12 20:16:19 +01:00
script Update licence to AGPL-3.0-only 2023-09-02 21:57:00 +02:00
src Translated using Weblate (Ukrainian) 2024-02-13 20:01:58 +01:00
.editorconfig Update licence to AGPL-3.0-only 2023-09-02 21:57:00 +02:00
.eslintignore Update licence to AGPL-3.0-only 2023-09-02 21:57:00 +02:00
.eslintrc.json Update licence to AGPL-3.0-only 2023-09-02 21:57:00 +02:00
.gitignore Add dev config to netlify 2023-09-02 23:29:36 +02:00
.node-version Add .node-version 2023-09-02 23:38:35 +02:00
.prettierignore Update licence to AGPL-3.0-only 2023-09-02 21:57:00 +02:00
.vercelignore Update licence to AGPL-3.0-only 2023-09-02 21:57:00 +02:00
astro.config.ts Add type annotations to transform() 2024-02-25 01:13:41 +01:00
CHANGELOG.md Release 3.1.0 2024-02-12 20:35:19 +01:00
CONTRIBUTING.md Fix formatting in CONTRIBUTING.md 2024-02-07 14:07:07 +01:00
LICENSE Migrate license from MIT to AGPL-3.0 2021-01-30 00:48:40 +01:00
netlify.toml Add dev config to netlify 2023-09-02 23:29:36 +02:00
package.json Update Astro and adapters 2024-02-25 01:13:41 +01:00
package.json.license Update licence to AGPL-3.0-only 2023-09-02 21:57:00 +02:00
pnpm-lock.yaml Update Astro and adapters 2024-02-25 01:13:41 +01:00
pnpm-lock.yaml.license Update licence to AGPL-3.0-only 2023-09-02 21:57:00 +02:00
README.md Fix formatting in README.md 2024-02-07 14:07:26 +01:00
tsconfig.json Better API code structure 2023-09-02 21:57:00 +02:00
vercel.json Update vercel.json 2023-09-02 21:57:51 +02:00

Share2Fedi

Instance-agnostic share page for the Fediverse.

Share₂Fedi (pronounced share-to-fedi) allows you to share stuff on Mastodon, Misskey, Friendica, and other federated social networks, instance-agnostic. Just type in the post text and the instance URL, and click Post!

Or, open this page with the prefilled text URL parameter—it will be automatically inserted into the text field. The same goes for the instance and lang URL parameters. This can be used to build custom share buttons for the federated social networks:

<a href="https://s2f.kytta.dev/?text=Hello%20world!&instance=mastodon.xyz">
  Share on mastodon.xyz
</a>

The instance URL can be saved in your localStorage to be automatically appended if used later—handy!

Important

I know I provide a Share₂Fedi instance for others to use, but if you want to use Share₂Fedi for your share buttons, please consider self-hosting it. Although it's free now, running my instance may become too expensive for me in the future.

Hosting

Vercel, Netlify, Cloudflare Pages

Share₂Fedi was designed to run on Vercel, but you can also run it on Netlify or Cloudflare Pages. To deploy it yourself (it's free!), you can use the following buttons:

Deploy to Vercel Deploy to Netlify

To deploy to Cloudflare Pages, fork the repository and follow the instructions.

Host it yourself

Self-hosting Share₂Fedi outside of SSR providers requires some extra setup:

Prerequisites: modern Node.js (v18 is recommended), pnpm. You can host with Deno, but Node.js is still required to build Share₂Fedi.

  1. Install dependencies.

    pnpm install
    
  2. Build.

    pnpm build
    

    If you want to use Deno, add the --s2f-use-deno flag:

    pnpm build --s2f-use-deno
    
  3. Run server.

    By default, this will only listen on localhost port 3000. To enable listening on a certain host and/or port, set the HOST and PORT environment variables, respectively.

    node dist/server/entry.mjs
    

    In production, you might want to use a process manager, like PM2:

    # Start the app, restart on file changes (except node_modules)
    pm2 start dist/server/entry.mjs --name "Share2Fedi" --watch --ignore-watch="node_modules"
    

    More information about self-hosting an Astro website with Node: https://docs.astro.build/en/guides/integrations-guide/node/#standalone

    If you've built Share₂Fedi for Deno:

    deno run --allow-net --allow-read --allow-env ./dist/server/entry.mjs
    

    More information about self-hosting an Astro website with Deno: https://docs.astro.build/en/guides/integrations-guide/deno/#usage

  4. Set up a reverse proxy.

    Basically, you need to run a reverse proxy that would redirect all incoming requests to localhost:3000. Here's how to achieve this in various HTTP servers:

    1. Apache
    ProxyPass "/" "http://localhost:3000/"
    
    1. Nginx
    location / {
        proxy_pass http://localhost:3000/;
    }
    
    1. Caddy
    reverse_proxy :3000
    

Docker

If you really have to use Docker, there is a good guide on building Astro apps with Docker. I will not provide support for Docker-based deployments in the observable future.

Contribute

Source code

TL;DR: pnpm install && pnpm dev

See contributing guide for instructions on how to contribute source code to the project, including adding new Fediverse projects.

Translations

Share₂Fedi uses Hosted Weblate for translations. You can edit translations using it's practical interface.. You also could do it manually by editing files in src/i18n/translations, but this is NOT recommended.

Translation status

Note

New languages do not become automatically available. For this, a separate change to our ad-hoc i18n engine has to be made. See contributing guide for instructions

We thank Weblate for providing Libre hosting!

See also

📯 Shareon (lightweight, stylish, and ethical share buttons) uses Share₂Fedi under the hood!

Licence

© 20202023 Nikita Karamov
Licensed under the GNU Affero General Public License v3.0 only.


This project is hosted on GitHub: https://github.com/kytta/share2fedi.git