Coder Social home page Coder Social logo

okunaorg / okuna-api Goto Github PK

View Code? Open in Web Editor NEW
238.0 238.0 81.0 65.43 MB

πŸ€– The Okuna Social Network API

Home Page: https://okuna.io

License: MIT License

Python 95.77% Makefile 0.03% Shell 0.82% HTML 3.33% Dockerfile 0.06%
api backend django okuna openbook python social-network

okuna-api's People

Contributors

bardurc avatar dependabot[bot] avatar evict avatar javabudd avatar jozsefsallai avatar komposten avatar lifenautjoe avatar stranljip avatar uiboy 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

okuna-api's Issues

@Mentions

Would be great to be able to @mention linked people. Meaning people that are following us or we are connected with.

This would prevent people from mentioning and spamming strangers while still be functional within people that are linked to each other.

Video uploads

Be able to upload videos to posts.

The tricky part here is that videos must be processed and this is a resource intensive operation.

We will probably have to build some sort of pipeline for processing and optimising videos.

Scalability of reporting X,Y,Z

Right now the reports present several limitations.

There is no way for the original reporter to know the outcome of his report, when filtering reported posts in the timeline, on every query we are checking whether the post has x amount of reports in order to hide it, where this condition can easily be set when a new report arrives and it reaches the threshold, although there is a single status to the overall post report, we are storing it on every single report created by a user.

The way to make this whole thing scalable is to create a higher level model called ReportedPost which has a many relationship to PostReport.

This would allow us to quickly filter out posts from the timeline which have a ReportedPost.status=PENDING without any dynamic calculation. When a new report arrives, we check if the threshold has been met, and if so we change its status from ReportedPost.status=NEW to ReportedPost.status=PENDING.

This model can also act as a holder of other relevant information in the report of the post, such as the reason why the moderator approved/rejected it and the actuator of the decision.

Same thing goes for reporting comments and communities.

As a bonus, when a moderator marks the post as REJECTED, on new reports we can check for this condition. So if ReportedPost.status=REJECTED and reported posts threshold is original threshold + some new offset. We change the status to ReportedPost.status=OPENBOOK or such and we know we now have to act on it.

Community/profile post notifications

Specially now on alpha/beta stages, would be great if we can be notified when there's something new in a community or person we're following so we don't have to be checking our phone all the time.

Community invite rejected handling

Noticed that invited people who did decline the invitation will appear in the list with "invite" behind their names. When I click on a member's "invite" button who aparently declined it wil say I already invited this person. Would it be possible to deactivate that button? On the other hand when he or she would like to be invites on a later time in life this solution would not be good.. perhaps another color of the button? Just to have a better overview of who to invite and who declined and not to invite, but possible after a couple of weeks or so to prevent spam invites. You could also set a max of x invitation requests so spam in this case is not possible at all..

Curated communities

Create a type of communities which can have apart from administrators and moderators... curators.

All posts to this community will be placed on a queue that will be reviewed by administrators|moderators|curators for approval/refusal.

Request to join community

When a community is private, a user should be able to request to join a community.

Ideally there should also be a way for administrators to receive some info with the request, such as why do you want to join or some secret password.

Two factor authentication

Shouldn't have to explain the why of this one.

The question remaining is what specifically.

Do we want to implement TOTP ? Do we design the UX to prioritise a particular app for this such as Google Authenticator or Authy?

Do we implement SMS text based 2 factor auth that although it's not that secure, easier to use than TOTP ?

Input very much welcomed.

Trending posts with categories and community based only

With our goal in mind of encouraging community building rather than following building.

The trending section should be similar to the trending communities section where we can explore trending posts by categories.

We will manage to do this by using community posts which are inherently linked to a category.

Expirable auth tokens

Currently the auth token is fixed to a given user. We need to make this token expire and claim a new one frequently in the app.

This is a precursor to #152 .

Post comment replies

Would be great to have a way to reply to peoples comment.

It doesn't need to be a thread by itself each comment.

Should send a notification to the original commenter and provide a way to retrieve the replies for a given post comment.

Reset password

Create a way to reset a password.

How did we miss this? πŸ€¦β€β™‚οΈ

Community Topics

This one is a biggie.

Build a logical way for categories to have topics. For example a photography community might have a black and white topic, symmetry & more.

It will be a challenge in the user perspective to make it make sense but seems like a pretty great thing to build.

Remove Exif information from images

Uploaded images need to be stripped from the Exif data. The metadata that comes with the images might reveal the user's location, the phone they use etc. This is possible using Pillow, which is already part of the project.

An idea of how to do this can be found: here.

What's new section

Would be great to have a section where we can see what's new in the app everytime there is something new.

See own followers

It's essential to be able to see who's following us.

Shouldn't be too hard. A cursor-based pagination stream of followers based on user ids

Changing username does not allow going back to original username even when not taken

Some people changed their username and when they tried to change it back to the original it was showing username taken error, even though there are no users with that username.

This probably happens because we check both UserInvite and User tables to see if usernames are taken in order for people not to change to some backers username who has not created their account yet.

However, we should check only for those rows in the UserInvite table that have not yet created their account.

Validate image file size

To prevent resource exhaustion the API should check the image file size. This can be done by comparing max size with request.FILES['file'].size. What is the largest image size Openbook will support?

Link previews

Would be nice to be able to preview links posted in a post.

This implies detecting theres a link on a given post and fetching its metadata.

We can do some proxying for the metadata to keep it private for the user.

Transitioning community from private to public handling

Cyrill Kunze [5 minutes ago]
For now I think this is a very important thing that should be well considered for the future how Openbook will handle this to take engough care about users privacy.

It might be ok to allow it, if it meant that previous posts would remain private and only new posts would be public.
At the same time there should be a notice to all community members that the community has changed to public (edited)

Refactor search query strings to request body

Although a traditional pattern for making search persistence users/?query=joe, there is no real reason why not having the query as part of the request body, making it non loggable by the server.

Multi-device session management

Support issuing multiple revokable tokens. One for each of the person devices.

This would allow to get an overview of the active "sessions" and revoke access at any moment of a particular one. For example if the device was stolen.

Gif uploads

Would be good to be able to upload gifs.

Now with the mobile version this would be through a Giphy integration.

Would be even better if we can do this too with avatar/cover photos.

In the behind the scenes we will most likely for performance and bandwidth reasons convert everything to videos, therefore #137 is a precursor of this.

Consider ActivityPub

In the FAQ I read:

"Will Openbook be decentralised?

We want to get there eventually. We’re looking into Solid MIT approach (The one from Tim Berners Lee) and we’re very pleased with it so far."

Please consider implementing ActivityPub! It's a W3C standard and is already live on multiple projects (incl. Mastodon). It can even work when Openbook is still centralized. It's actually the only relevant social protocol today.

See also Wikipedia. Don't make Openbook the next walled garden!

Edit posts

People have mentioned they would like to modify posts.

Allow it but do add a mark that it has been modified to prevent confusion.

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.