All Projects → IronOxidizer → lemmy-lite

IronOxidizer / lemmy-lite

Licence: AGPL-3.0 license
A static, JSless, touch-friendly Lemmy frontend built for legacy web clients and maximum performance

Programming Languages

rust
11053 projects
CSS
56736 projects
HTML
75241 projects

Projects that are alternatives of or similar to lemmy-lite

ifconfig.top
Source code of ifconfig.top website
Stars: ✭ 19 (-62.75%)
Mutual labels:  actix-web
actix-tensorflow-example
An example of using TensorFlow rust bindings to serve trained machine learning models via Actix Web
Stars: ✭ 40 (-21.57%)
Mutual labels:  actix-web
actix sqlx mysql user crud
A user crud written in Rust, designed to connect to a MySQL database with full integration test coverage.
Stars: ✭ 78 (+52.94%)
Mutual labels:  actix-web
actix-web-opentelemetry
OpenTelemetry integration for Actix Web
Stars: ✭ 45 (-11.76%)
Mutual labels:  actix-web
Examples
Community showcase and examples of Actix ecosystem usage.
Stars: ✭ 2,090 (+3998.04%)
Mutual labels:  actix-web
rust cms
使用Rust编写一个CMS(内容管理系统)可以做为个人博客,公司网站
Stars: ✭ 32 (-37.25%)
Mutual labels:  actix-web
editor.sh
Yet another live programming environment for collaborative code editing and running.
Stars: ✭ 29 (-43.14%)
Mutual labels:  actix-web
lemmur
🐒 A mobile client for lemmy
Stars: ✭ 228 (+347.06%)
Mutual labels:  lemmy
ume
🐻‍❄️💐 Easy, and flexible image host to share with your friends on Discord, Telegram, and more.
Stars: ✭ 28 (-45.1%)
Mutual labels:  actix-web
awesome-alternatives
A list of alternative websites/software to popular proprietary services.
Stars: ✭ 123 (+141.18%)
Mutual labels:  lemmy
actix-swagger
Swagger code generator for actix-web framework
Stars: ✭ 58 (+13.73%)
Mutual labels:  actix-web
Actix Web
Actix Web is a powerful, pragmatic, and extremely fast web framework for Rust.
Stars: ✭ 12,723 (+24847.06%)
Mutual labels:  actix-web
dagpi
Dagpi is a powerful and fast api that does image manipulation as well as serves datasets. It is fast and written in rust and python. Perfect for discord bots, social media apps, camera apps and more.
Stars: ✭ 25 (-50.98%)
Mutual labels:  actix-web
actix-web-grants
Authorization extension for actix-web to validate user permissions
Stars: ✭ 85 (+66.67%)
Mutual labels:  actix-web
partner
partner
Stars: ✭ 16 (-68.63%)
Mutual labels:  actix-web
crate-trends
🦀Visualize Rust Package: Crates comparison website
Stars: ✭ 14 (-72.55%)
Mutual labels:  actix-web
lenny
( ͡° ͜ʖ ͡°) A more user-respectful fork of Lemmy. Created for https://derpy.email.
Stars: ✭ 61 (+19.61%)
Mutual labels:  lemmy
actix-casbin-auth
Casbin Actix-web access control middleware
Stars: ✭ 40 (-21.57%)
Mutual labels:  actix-web
lemmy-terminal-viewer
a terminal user interface for lemmy
Stars: ✭ 21 (-58.82%)
Mutual labels:  lemmy
Actix-Blog
A personal blog powered by rust-lang and actix-web
Stars: ✭ 42 (-17.65%)
Mutual labels:  actix-web

lemmy-lite

A static, JSless, touch-friendly Lemmy frontend built for legacy web clients and maximum performance

This project is not intended for official use, but rather as a proof-of-concept for pre-rendering Lemmy. Eventually it will transition into a microservice that is ran alongside Lemmy, for example, under lite.lemmy.com or lemmy.com/lite. Ideally it will run on the same machine removing any extra latency in API calls.

Built With

Features

  • Open source, AGPL License.
  • Cross-instance support, get a lite version of any Lemmy instance.
  • JSless using pre-rendered HTML and CSS only.
  • Touch and mobile friendly.
  • Small screen support, as small as 320px.
  • Internet Exporer and NetSurf compatible.
  • High performance.
    • Written in rust.
    • Static, only one1 tiny request per page.
    • Supports arm64 / Raspberry Pi.

Installation

  • Symlinks won't work since nginx user (root) requires ownership of linked file
  • Pigz static to allow serving of compressed files for lower bandwidth usage
cd lemmy-lite
pigz -rk11f static
cp -rf static /etc/nginx/lemmy-lite
cp -f lemmy-lite.conf /etc/nginx/sites-enabled/
systemctl start nginx
cargo run --release

Pictures

Android Desktop iOS
android desktop ios

Notes

  1. As of 0.2.0 (Aug2020) worst case scenario (240 comment thread) takes 9ms to render on server.
  2. First load fetches a stylesheet, favicon, and svgs. These are cached so all subsequent pages require only a single HTML request.
  3. I use CSS Tables instead of FlexBox and Grid because Tables are faster, simpler, and have much better legacy support. Using CSS tables over HTML tables avoids excess DOM objects.
  4. Each page refresh is limited to API critical chain of 1 to limit the impact on instances and to keep page times fast.
  5. 1.0.0 is set for when account functionality is stabilized.
  6. Ideally, static content is served through a CDN to further improve server performance and response times.
  7. Strictly only uses characters from BMP for legacy font support.
  8. Catch me developing lemmy-lite on my streams at Twitch or YouTube
  9. SVGs hand optimized using Aydos SVG Path Editor

TODO

  1. Fix user and community links (change markdown interpretation for same-site links)
  2. Consider not supporting UTF-8 and only using ASCII characters for data size and better legacy font support.
  3. Consider switching from Maud to Sailfish to improve performance.

Quirks

  1. CSS word-spacing is broken on iOS and NetSurf

Update Script

killall lemmy-lite
git pull
rm static/*.gz
pigz -rk11f static
for i in static/*gz; do
  [ -f "$i" ] || break
  j="${i%.*}"
  if((`stat -c%s "$i"`>=`stat -c%s "$j"`));then
    echo "$i is larger than base, deleting"
    rm -f "$i"
  fi
done
sudo rm -rf /etc/nginx/lemmy-lite
sudo cp -rf static /etc/nginx/lemmy-lite
nohup cargo run --release &
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].