Giter Site home page Giter Site logo

pixelfed / pixelfed Goto Github PK

View Code? Open in Web Editor NEW
5.4K 112.0 645.0 56.94 MB

Photo Sharing. For Everyone.

Home Page: https://pixelfed.org

License: GNU Affero General Public License v3.0

PHP 54.64% Vue 28.53% Shell 1.48% Blade 14.98% HTML 0.20% Dockerfile 0.18% Procfile 0.01%
laravel activitypub federation pixelfed social-network fediverse

pixelfed's Introduction

Build Status Latest Stable Version License

Introduction

A free and ethical photo sharing platform, powered by ActivityPub federation.

Official Documentation

Documentation for Pixelfed can be found on the Pixelfed documentation website.

Run on YunoHost

Install on YunoHost

Pixelfed app for YunoHost. See the package source code

License

Pixelfed is open-sourced software licensed under the AGPL license.

Communication

The ways you can communicate on the project are below. Before interacting, please read through the Code Of Conduct.

Pixelfed Sponsors

We would like to extend our thanks to the following sponsors for funding Pixelfed development. If you are interested in becoming a sponsor, please visit the Pixelfed Patreon Page

pixelfed's People

Contributors

aditoo17 avatar ahstro avatar angristan avatar ashleyhull-versent avatar begini avatar boffire avatar dansup avatar dependabot[bot] avatar hellcp avatar j1t avatar jazmichaelking avatar jippi avatar jordibrus avatar kaiyou avatar lisbonjoker avatar mbliznikova avatar mkljczk avatar monkeyless avatar murazaki avatar n-haddag avatar okpierre avatar quenty31 avatar shleeable avatar strubbl avatar thisismissem avatar trwnh avatar wileyfoxyx avatar xmgz avatar yoheizuho avatar yvisherve avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pixelfed's Issues

Error when unliking a post

Getting a "Whoops, looks like something went wrong." page when unliking a post. When going back I can see that my like is removed.

ActivityPub Endpoints

  • Actor Object (/users/username)
  • Actor Inbox (/users/username/inbox)
  • Actor Outbox (/users/username/outbox)
  • Following (/users/username/following)
  • Followers (/users/username/followers)

Image rotates upon upload?

Image display in correct orientation in my phone library & initially when viewing the post however its rotated 90 degrees upon viewing from my profile (and remains rotated after clicking on the image to view it indevidually)

Profile is https://pixelfed.social/Satsu and Iโ€™ve got a screen recording of this happening if thats useful to you

Onboarding

  • Project website (pixelfed.org)
  • Nice landing page
  • First time login tour

Save photos - Can't unsave

Can't remove saved photos.
(Can only save photos from "My Timeline".
No indication of post being saved.)

Indicate which account is logged in.

For users with multiple accounts, there is no indication which account is currently logged in until they go to the User dropdown and click My Profile. The user's avatar and local username should be displayed at the top of that dropdown, or in the top bar somewhere.

Add 'Repost' Feature

Simply, an option for users to repost posts they like. There are several good reasons to do this:

  1. Discoverability is a massive problem in a decentralized network. When something appears on your feed as a repost, you can click the OP's profile to see if they're someone you want to follow. Popular posts get shared around, accounts get noticed.

  2. It may help reduce image theft. Instagram users have to download and re-upload images to share them, and if someone does this, they're less likely to credit, tag or even spell correctly the name of the original poster.

If the ability is added to comment on the repost users can be tagged, conversations started. Comments could be added to the original post's comment thread, so the OP would know what's being said.

En/disabling this feature per-user or per-instance may be desirable.

Nodeinfo endpoint

Hello,

For fediverse statistics and discovery, it would be great to have pixelfed implementing nodeinfo [1] API endpoint.

/.well-known/nodeinfo would returns:

{
  "links": [
    {
      "rel": "http://nodeinfo.diaspora.software/ns/schema/2.0",
      "href": "https://blah.tld/whatever/api/something/2.0"
    }
  ]
}

With a content-type of application/json; profile=http://nodeinfo.diaspora.software/ns/schema/2.0#; charset=utf-8

And /whatever/api/something/2.0 should be conform from the 2.0 schema in the nodeinfo spec.

[1] https://github.com/jhass/nodeinfo

Error when following someone

When trying to follow someone I get a "Whoops, looks like something went wrong." page, but when going back, I can see that I am following the user.

Finish Dockerfile

@kpcyrd contributed a dockerfile, I have not had a chance to review it but I plan on doing that before the beta launch tomorrow.

Own account on Discover People

On discover page, sometimes I can see my own account on Discover People section, when I click follow on my own account it lead to 404 page.
I dont know how to reproduce it because it randomly occurred.

Security Features

  • bcrypt password hashing
  • OAuth / Authorized Applications
  • Option to verify email before account can do anything
  • Option to require TLS by default (including remote apis)
  • Two Factor Auth
  • Account Audit Log
  • Show Active Sessions in Security Settings
  • Usernames are retired after user deletes account
  • Close new registrations
  • Restrict new registrations to invite-only
  • Restrict new registrations to domain specific email addresses

forgot password abuse

hi! i woke up too late and i found out the admin closed the registration... i tried this method where you click on forgot password, type your email address, you get an email where you add your new password and it registered me. after that i could log out and log in back

Share photos/albums with special people

It would be nice to create a album and share is with special people.
The album is private only for the selected people
Maybe with a password or like a group or something like this.

ActivityPub Jobs

  • SharedInbox Listener
  • InboxWorker (Responds to inbox requests)
  • SharedInboxWorker
  • RemoteFollowImport (Imports last 9 images for new remote profiles)
  • Accept/Reject Workers

Incoming:

  • Posts: Create Note should be visible in your timeline
  • Comments: Create Note.inReplyTo should be visible on your post
  • Delete post: Delete Note should remove a post from your timeline
  • Delete comment: Delete Note.inReplyTo should remove a comment from your post
  • Update post: Update Note should change caption/metadata of post in your timeline
  • Update comment: Update Note.inReplyTo should change text of comment on your post
  • Like post: Like Note should +1 the likes count and add their account to the likes list on your post
  • Like comment: Like Note.inReplyTo should +1 the likes count and add their account to the likes list on your comment
  • Unlike post: Undo Like Note should -1 the likes count and remove their account from the likes list on your post
  • Unlike comment: Undo Like Note.inReplyTo should -1 the likes count and remove their account from the likes list on your comment
  • Boost post: Announce Note should +1 the reshare count and add their account to the boosted list on your post
  • Boost comment: Announce Note.inReplyTo should +1 the reshare count and add their account to the boosted list on your comment
  • Unboost post: Undo Announce Note should -1 the reshare count and remove their account from the boosted list on your post
  • Unboost comment: Undo Announce Note.inReplyTo should -1 the reshare count and remove their account from the boosted list on your comment
  • Follow: Follow should send an outgoing Accept Follow, add their account to your follower list, and start delivering to their inbox
  • Follow approved: Accept Follow should start showing their posts in your feed, and add their account to your following list
  • Unfollow: Undo Follow should remove their account from your follower list and stop delivering to their inbox
  • Force-unfollow (e.g. when blocked): Reject Follow should remove their account from your follower list and their posts from your feed
  • Block: Block should prevent you from following, liking, resharing, or commenting them

Outgoing:

  • Posts: Create Note should be delivered to their inbox and show up in their feed
  • Comments: Create Note.inReplyTo should be delivered to their inbox and show up in a thread
  • Delete post: Delete Note should be delivered to their inbox and remove a post from the feed
  • Delete comment: Delete Note.inReplyTo should be delivered to their inbox and remove a comment from a thread
  • Update post: Update Note should be delivered to their inbox and change the contents of a post (if supported)
  • Update comment: Update Note.inReplyTo should be delivered to their inbox and change the contents of a comment (if supported)
  • Like post: Like Note should be delivered to their inbox and locally add a post to your liked posts
  • Like comment: Like Note.inReplyTo should be delivered to their inbox and locally add a comment to your liked comments
  • Unlike post: Undo Like Note should be delivered to their inbox and locally remove a post from your liked posts
  • Unlike comment: Undo Like Note.inReplyTo should be delivered to their inbox and locally remove a comment from your liked comments
  • Boost post: Announce Note should be delivered to their inbox and locally add their post to your reshares
  • [-] Boost comment: Announce Note.inReplyTo should be delivered to their inbox and locally add their comment to your reshares (unnecessary in Pixelfed?)
  • Unboost post: Undo Announce Note should be delivered to their inbox and locally remove their post from your reshares
  • [-] Unboost comment: Undo Announce Note.inReplyTo should be delivered to their inbox and locally remove their comment from your reshares (unnecessary in Pixelfed?)
  • Follow: Follow should wait for an incoming Accept Follow
  • Follow approved: Accept Follow should be delivered to their inbox to let them know the follow was successful
  • Unfollow: Undo Follow should be delivered to their inbox, remove their account from your following list, and remove their posts from your feed
  • Force-unfollow (e.g. when blocked): Reject Follow should be delivered to their inbox, remove their account from your follower list, and stop delivering posts to their inbox.
  • Block: Block should be delivered to their inbox (debatable -- perhaps optional?), and then immediately be followed up by an outgoing Reject Follow; incoming activities from that account should be discarded and return a Reject Activity that gets delivered to their inbox.

URL Schema

Right now, image and comment permalinks share a path of site.tld/p/username/number, with no differentiation. I assume "p" stands for "post", but the following concerns arise:

  1. You cannot tell whether a given link leads to an image or to a comment.
  2. You cannot interact with a given image unless you click again to load its permalink.

Ideally, a comment's permalink would be somehow nested under the image that it refers to, and the image permalink would be nested under the username.

Also:

  1. Numbers are sequential across the entire instance -- this means that with minimal work, any given URL can be guessed.
  2. Usernames are using the same namespace as any other subdirectory (thanks @EliotBerriot)

A sample permalink that doesn't have as many issues would be: http://pixelfed.social/@trwnh/post/612987361475/comment/1

No displayed number limit when unliking posts

Hitting the heart increments the number of likes by one, clicking again removes the like. Further clicks continue to decrement the displayed like count by one with seemingly no bottom limit.

2018-06-01-16-08-pixelfed social

Comment permalink doesn't show the presence of other comments

https://pixelfed.social/p/mike/34 (only caption and linked comment is visible)
vs
https://pixelfed.social/p/ansuz/16 (all comments visible)

There should be some indication that only the linked comment is being displayed, in order to clarify that this isn't the only comment.

Also a bit confusing that /p/ is used both for images and for comments... perhaps rethink your permalink structure? (Separate issue #51 for that will go in-depth...) With a better permalink structure, this issue can be side-stepped by simply highlighting the linked comment.

Image dimensions should accommodate portrait 2:3

Most DSLRs (almost all, except the micro 4:3 class I think) use a 2:3 sensor ratio, so an image that's 1500 pixels long would be 1000 wide. It would be great to accommodate this with Pixelfed.

Instagram allows arbitrarily long landscape images, but portrait images max out at ~4:5, so a 2:3 image is too long. The user can either crop the image, or use other apps to pad the sides somehow.

Obviously a maximum ratio needs to be applied, or pencil-thin endless images would be a problem, but since most 'photographer' cameras are 2:3, it seems sensible to me that this ratio be considered as a maximum.

Bio character count is not indicated, and long bios are reset without warning.

While editing a bio I discovered that the character limit on bios is 125 characters. This has the following issues:

  1. There is no indication of any limits on the editing page.
  2. Attempting to submit a bio will clear the entire text field due to a page refresh.
  3. When typing a new bio, the user has no idea how long it is. ]

This can be solved easily by the following:

If the user has JS enabled,

[ ] Include a live character counter for any field with a character limit.
[ ] Do not allow the user to submit a too-long bio, so that the page doesn't refresh.

If the user does not have JS enabled:

[ ] Display the character limit next to each field that has a limit.
[ ] Set a maxlength attribute on the tag.

[Masterpost] Missing functionality and related issues from the beta launch

Figured it'd be good to maintain a list of things that are currently missing and would be expected to be implemented.

Timeline/posts

Posts

  • Posting UI should be separated from timeline (#89, #86 #168, fixed #349 )
  • Post without a caption (#110)
  • Show caption limit before posting (#121, fixed by #127)
  • Show size/format limit before posting
  • Preserve caption for editing if too long (#236)
  • Show live character count for JS users (#346)
  • Preview image before posting (#171)
  • Preview multiple images before posting (#171 (comment), fixed by #524 )
  • Delete images (#98)
  • Show own posts in personal timeline (#85) (fixed by #190)
  • Filters
  • Separate filters for each image in album (#266, fixed in #524)
  • Edit filters after upload (#798)
  • Edit album order (#798)
  • Embed code (currently #) (#776)

Likes

  • Indicate liked posts with filled heart rather than underline (#70) (fixed #186 #187 #188)
  • Indicate liked posts on post page, not just on timeline (#207)
  • Animation for liking a post (potentially fixed by #222)
  • Storing liked/unliked state without having to refresh the page (#87) (fixed by #186)
  • Listing who liked a post (#213)

Comments

  • Comment button should link to all comments (#161)
  • Load more comments
  • Parse mentions (#231)
  • Parse hashtags
  • Parse links
  • Like comments
  • Reply to comments
  • Delete comments (#97)
  • Show comment in context on permalink (#234)
  • Show live character count for JS users
  • Preserve comment for editing if too long (WIP #236)

Save

  • Saving posts not implemented fully -- can't unsave posts (#64)

Search/tags:

  • Hashtag suggestion breaks with 3+ characters or # sign (#76, fixed by #488)
  • Sort tag suggestions by how many posts they have
  • Irregular suggestions (#88)
  • Hashtag page avatars (#69)

Discover:

  • Scroll through profile suggestions, show more than just 3 at a time (deprecated)
  • Allow for temporarily / permanently clearing a suggestion (deprecated)
  • Do not clear suggestion immediately after following (only clear on page refresh, to allow undo) (deprecated)
  • Do not suggest your own account (#74) (fixed by #108) (deprecated)
  • Uniform square thumbnails (potentially fixed by #168)

Activity:

  • "Follow" button should change after following someone (#63) (fixed by #95)
  • Notifications of liked posts should link to those posts (#58)
  • New notification indicator

Profile:

  • Count only images as "posts" (#84) (fixed by ae6a59e)
  • Follower/following lists should allow un/following accounts (#65) (fixed by #105)
  • Detect and regenerate failed thumbnails (#67)
  • Unsave posts from "Saved" tab
  • Parse mentions in bio
  • Parse hashtags in bio
  • Parse links in bio
  • Allow editing bio directly from My Profile
  • Show bio on follower/following pages

Settings:

  • Character count while setting bio (#59)
  • Reduced motion (#226)
  • Finish user settings (#3)
  • Change avatar/email
  • Email/notification/privacy/security settings
  • Import/export data (#814)
  • Applications/Developers OAuth

Documentation:

  • "About" is sparse
  • "Features" (removed)
  • "Help" (some empty pages)
  • "Fediverse" is sparse
  • "Open source" is sparse
  • "Terms"
  • "Privacy" policy
  • "Platform"/API terms is orphaned https://pixelfed.social/site/platform
  • "Libraries" (removed)

Footer links:

  • "API" links to /timeline instead of api docs
  • "Directory" (removed)
  • "Profiles" (removed)
  • "Hashtags" (removed)
  • "Language" links nowhere
  • "C 2018 PIXELFED.ORG" links nowhere (should link to pixelfed.org?)
  • is copyright even the right symbol here? Shouldn't it instead reflect the license of the project somehow?

Registration (#373):

  • Terms
  • Data policy
  • Cookie policy

Other things on the roadmap:

  • "Major features" (#6)

    • Image albums/video upload
    • Mentions/DMs
  • View public timeline while logged out (#214, replaced with Discover page)

Visual Indication For Favourites

Currently when you favourite an image, the heart stays the same color. Since a common pattern is to change the color of already favourited entities in other platforms, I was confused and did a brief like-unlike loop. Perhaps the color could be changed to black when something is already favourited?

Add "Locked accounts" feature

A locked account should manually approve all follow requests in order to publish content for a restricted set of people (same idea as Mastodon's Locked Account feature).

Optional dark theme (and maybe additional themes)

I'm thinking something like a easily accessible button where one can easily toggle different themes by clicking, either drop down or just a button that switches between them while you click like a toggle thing. It is pretty much up to Dan or anyone else as I am not a coding dude or anything but thought it would be good to do some initial input. I am very sure that a lot of people will appreciate this feature.

Add different 'like' types

Liking things is great, but often I'd like to like something ironically, or just acknowledge that I've seen it. Facebook sort of expanded on the 'like' functionality by adding several emojis, but what if an emoji-picker was used to allow any single emoji to be used when liking a post?

Star. Heart. Mermaid. Skull. X mark. Check mark. Warning icon. Country flag.

One single character could allow much more subtlety and greater expression. And a single emoji doesn't take a whole lot of space, and most users will be using phones or a web interface with an emoji picker already... Store the user's default like-on (like icon, hehe), along with the instance's default, and recently used...

Add "Content Warnings | Sensitive content" features

Like Mastodon, CW should indicate some content might be problematic for some people.
CW should hide the picture/description, sensitive content only hide the picture.

Users could potentially opt-in to always see content hidden in CW/Sensitive posts.

Finish User Settings

  • Update email address
  • Update password
  • Upload/Change Avatar
  • Email Settings
  • Notification Preferences
  • Privacy Settings
  • Security Settings (2fa, log)
  • Authorized OAuth Apps
  • Data Export
  • Data Import
  • Developer OAuth Apps

Major Features

  • API
  • Direct Messages
  • Hashtags
  • Mentions
  • Image Albums
  • Short Videos

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.