Code Monkey home page Code Monkey logo

ticker's Introduction

ticker Integration Quality codecov Docker Automated build

This repository contains the API for the Systemli Ticker Project.

Documentation

See the rendered documentation under https://systemli.github.io/ticker/

You can find and adjust the documentation under docs/

Contribution

We welcome contributions to this project. Feel free to fork the repository and commit your changes and submit a Pull Request. To ease the process you can easily use Gitpod to create a virtual environment.

Open in Gitpod

Licence

GPL-3.0

ticker's People

Contributors

0x46616c6b avatar dependabot[bot] avatar doobry-systemli avatar dependabot-preview[bot] avatar xshadow avatar duritong avatar td00 avatar y3n4 avatar

Stargazers

mce0 avatar Denis Defreyne avatar Julian-Samuel Gebühr avatar Gregor avatar whoami avatar  avatar  avatar Andrew Johnson avatar  avatar Ricardo avatar Depressive Internationale avatar ponyboy avatar philipp-r avatar t. avatar Juri Grabowski avatar jon ⚝ avatar m0x61  avatar Paul Kitt avatar Philipp Wiesner avatar  avatar  avatar

Watchers

Lucian avatar Neustradamus avatar James Cloos avatar Juri Grabowski avatar  avatar  avatar m0x61  avatar

ticker's Issues

Introduce Websockets

With WebSockets we could

  • ensure to remove messages from the frontend when they deleted
  • push new messages to all connected clients
  • push changes in ticker settings (description, ...) to all connected clients
  • simplify fetching new messages
  • ...

Dependabot can't resolve your Go dependency files

Dependabot can't resolve your Go dependency files.

As a result, Dependabot couldn't update your dependencies.

The error Dependabot encountered was:


If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

View the update logs.

Validation

Currently the API eats all inputs, the only case they will fire an error is when you try to insert a unique which always exists (e.g. Ticker.domain). Would be nice to have validation for some fields before we store them.

Feature: Instagram Support

Instagram API: https://developers.facebook.com/docs/instagram-api/guides/content-publishing/

This only works for business accounts, but they are just as free (apart from data).

Unfortunately, a lot of people hang out on Instagram and the youth climate movement (FFF and offshoots) also organises itself largely through it.

I'm not a fan either. But Pixelfed hasn't really got around yet. Adding that as a second step would also be an idea 🤗

Indirect Facebook support

If Instagram were built in, it could be directly forwarded to a Facebook account in the "metaverse" 🤮 ;)
Again, I'm not a fan, but really a lot of Ü35 people still hang out on Facebook 🙈

Limitations

The prerequisite would be that at least one image is sent along, and for this an error handling mechanism is needed that kicks in when Instagram forwarding is activated.

At https://luetzerathlebt.info/ticker, we actually always have at least one picture per post, and we want to keep it that way.

In general, share-pics are now created for any call for action and photos are taken for every action.

So for the social media use case, it is definitely very desirable to always have a picture.

Feature: Umap Support

Current Map Features

The current map feature doesn't have the following features:

  • Not added to posts in Integrations (Twitter, Telegram, Mastodon)
  • No Layers
  • No Design options for objects (Color, Shape, etc.)

Proposal

Use https://github.com/umap-project/umap
as the Map Software because it has layers and Design Options.
See example map: https://lstu.fr/luetzisolimap

Input Side (to umap)

There could be a GeoRSS feed generated by the Ticker which automatically integrates to a umap. So maybe just an additional field or an iframe of the map in the ticker-admin-panel to add an object to the map.
Examples for such a mechanism here:

It would be really nice if there was an option to have multiple maps connected and be able to select before sending a post on which map to add the marker/object through the admin panel.
Also an option to select none would be good, to not create an additional requirement for each post.

Markdown Support

Umap supports a flavor of Markdown, so the Text of the Ticker Posts could be added to the Information of the Object on the map. Also Photos and Links can be added. See:
https://wiki.openstreetmap.org/wiki/UMap/Guide/Text_formatting

Output Side (from umap)

For the Posts there is probably no easy way to add an interactive map on every Platform (maybe html-iframes, but probably not).
A compromise could be:

  • the selected map is shown in an iframe in the admin panel
  • you select the zoom level and part of the map that should be posted in that iframe (by dragging and zooming)
  • the ticker software automatically takes a screenshot of that exact frame when you click on a button (e.g. send or dedicated button) and adds it as a photo to the Post
  • the Map is distributed to all Platforms via the Screenshot

Here is an API that might be useful:
https://rapidapi.com/collection/screenshot-api

Ideas on how to do it

Sorted from hard/nice to easy/okay

  1. Connect the Ticker-Account to a umap/openstreetmap Account, so you could choose from all the Maps the Account has access to. Umap uses openstreetmap for its Account Management (SSO) so there is probably a way to mimic that and have the ticker as an SSO-Client for Openstreetmap.

  2. Just have a single map connected to one Ticker Feed through a GeoRSS-feed.
    This can simply be done via the settings of the umap. It just requires the Ticker-API to generate a GeoRSS-Feed.
    It could be done with an if-clause that makes it not push to umap when there is no information about location added.

Additional Information

Feature: Video Support

Reason

Many of our actions are now accompanied by mob videos, aftermovies, appeals and, especially in the case of evictions but also mass actions, repeatedly short 2:20min videos for Twitter.

Prioritisation

It would be mega good if we had the possibility in the future (optimally until mid-January = start of eviction Lützerath).

Software

One software that could be used to implement this is to host https://mediacms.io, which then serves as a CMS.
There is the possibility of uploading media privately or for the entire instance to see. PDFs, audio, images and videos are supported.

Advantages

Uploading images would also feel more comfortable and interactive. Also, people could upload stuff who don't have direct access to the ticker account.

Idea for first step

The concrete implementation could initially be that the https://mediacms.io instance is non-public and individual accounts are given out, which are then linked to the ticker accounts, so that when you click on "Add Media" a kind of gallery appears for selecting the uploaded files.

Further ideas

Theoretically, MediaCMS instances would also be useful for political campaigns in general, as currently services like Telegram, Signal or Nextcloud (which is nice, but ultra slow) are abused for purposes like media sharing, or proprietary services like mega.io or flickr are used.

I don't yet have any idea what a public mediacms instance could look like.
However, there are many user management options (self-registration, invite only, closed system actions) and many publishing options (public).
and many publishing possibilities (public, private, unlisted and custom).

Here is a video about the software:
https://invidio.xamh.de/watch?v=aSX26zAydC0&t=189

Here is a blog post as a setup guide:
https://theitguycj.com/self-host-and-share-your-videos-audio-and-pictures-with-mediacms/

Alternative Idea

Alternative idea that solves only half as many problems, but is probably much simpler.

Use Peertube, Youtube, Vimeo and others as storage and enable integration via the share function or HTML Iframe or similar technology.

A PeerTube instance on which actors are already represented is e.g. this one:
https://climatejustice.video/

Dependabot can't resolve your Go dependency files

Dependabot can't resolve your Go dependency files.

As a result, Dependabot couldn't update your dependencies.

The error Dependabot encountered was:


If you think the above is an error on Dependabot's side please don't hesitate to get in touch - we'll do whatever we can to fix it.

View the update logs.

Endpoint for interacting with users at the ticker entity

Introduce new endpoint which will return all users are granted for a ticker.

GET /tickers/:tickerID/users
PUT /tickers/:tickerID/users
DELETE /tickers/:tickerID/users/:userID

The purpose of this issue is to list/add/remove users for a ticker within the ticker view in the admin.

Deliver uploaded media directly

Uploads are just put into a directory and then delivered through the upload url + /media.

Given this is just static content it could also be delivered directly by a webserver (that you might have to use anyway to front the ticker api) and thus not having another round-trip over the API and fetching the UUID from the db.

Currently, this is not easy as the uploads are stored in a timestamped directory tree.

IF the api would publish the uploaded media under a dedicated path (or would include the timestamped path in the media url) then you could just exclude the media/ path to be sent to the API process and deliver content directly.

Dependabot can't parse your go.mod

Dependabot couldn't parse the go.mod found at /go.mod.

The error Dependabot encountered was:

go: github.com/appleboy/gofight/[email protected] requires
	github.com/astaxie/[email protected] requires
	github.com/belogik/[email protected]: invalid version: git fetch -f origin refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in /opt/go/gopath/pkg/mod/cache/vcs/0c31a160b38443d5e33ca2a5e60e51734d83293b66dc3d9b0c12699f8d2b5cec: exit status 128:
	fatal: could not read Username for 'https://github.com': terminal prompts disabled

View the update logs.

Feature: Pagination for Messages API

Summary

The is no pagination for the Message API used in the ticker-admin. If a ticker has lot of messages the fetching tooks a long time.

Acceptance Criteria

  • Implement Pagination for GET /v1/admin/tickers/:tickerID/messages

Feature: Images

The ticker should support uploads such as images we can display in the Frontend. For this we need to decide how we upload, where we store and how we serve the files.

A rough idea is to upload the files to a configurable path like /var/www/ticker-files, returning the complete link which is a combination from a configurable host like https://ticker-cdn.systemli.org and the relative path from the upload. With this approach we can later support other CDNs.

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.