Serein
Rust로 만든 가볍고 성능 좋은 Discord 전용 네이티브 클라이언트
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
10-second pitch: RDVWR is a lightweight front-end for Reddit. Browse subreddits, posts, comments, user profiles, and search — no Reddit account required. • 🚀 Fast: a fraction of the page weight and requests of reddit.com • 🔓 No Reddit account required • 🖼️ Media support: galleries, Reddit video (HLS + audio sync), YouTube, GIFs etc. • 🌙 Dark theme, mobile-friendly 1. About • Features • Built with 2. Comparison • Speed 3. Deployment • Docker • Running from source 4. Configuration • Environment variables • Default settings • Media proxying 5. CreditREADME 전문 보기 ↗
A minimal Reddit viewer
10-second pitch: RDVWR is a lightweight front-end for Reddit. Browse subreddits, posts, comments, user profiles, and search — no Reddit account required.
RDVWR is a single-page Reddit viewer. A Python/Flask backend proxies Reddit's API, and a vanilla JS frontend handles routing and rendering in the browser.
/settings)Measured with Playwright (Firefox), fresh browser context per run, median of 3 runs.
| Page | Metric | rdvwr | reddit.com |
|---|---|---|---|
| Home | Wall load time | 1087 ms | 4278 ms |
| Home | Data transferred | 182 KB | 5914 KB |
| Home | Requests | 10 | 104 |
| Feed (r/pics) | Wall load time | 1038 ms | 3371 ms |
| Feed (r/pics) | Data transferred | 188 KB | 1721 KB |
| Feed (r/pics) | Requests | 10 | 57 |
git clone https://github.com/evanpaul14/RDVWR.git
cd RDVWR
docker compose up -d --build
Serves on port 8002. Set any of the environment variables in the environment (or a .env file) to pass them through.
git clone https://github.com/evanpaul14/RDVWR.git
cd RDVWR
pip install -r requirements.txt
python app.py
Opens at http://localhost:8002.
Run the tests with:
python3 -m pytest tests/
| Name | Default | Description |
|---|---|---|
REDDIT_OAUTH | 1 | Spoofs Reddit OAuth. Set 0 to disable and use public JSON API. |
GITHUB_DISPATCH_TOKEN | (unset) | Fine-grained GitHub token (Actions read/write on the repo). When comment loading fails, the server uses it to run the update-gql-hash workflow right away instead of waiting for its daily run. |
PROXY_MEDIA | 0 | Set to 1 to route media through the server (see below). |
DISABLE_NSFW | 0 | Set to 1 to strip over-18 posts/communities from every response and 404 direct links to them. |
DISABLE_DOWNLOADS | 0 | Set to 1 to 403 the /api/download* endpoints (including the ffmpeg-based reddit-video merge). |
RDVWR_DISABLE_PERSONALIZED_HOME | 0 | Set to 1 to disable the personalized (logged-in) home feed entirely. |
REDDIT_LOGIN | 0 | Set to 1 to enable logging in to a Reddit account from the settings panel (see Reddit login). |
REDDIT_LOGIN_OWNER_KEY | (unset) | With REDDIT_LOGIN=1, a long random passphrase that lets you use the logged-in account from other devices behind a reverse proxy: enter it once per browser at /auth/owner. Serve over HTTPS. |
REDIS_URL | (unset) | Backs the response cache with Redis instead of in-process state, so it stays correct across multiple WEB_CONCURRENCY workers or horizontally-scaled instances. Leave unset for a single-instance deployment. |
WEB_CONCURRENCY | 1 | gunicorn worker count. Only raise this once REDIS_URL is set — otherwise each worker has its own cache. |
These set the out-of-the-box value for each toggle in the settings panel. A visitor changing a
setting always overrides these — they're only the starting point (stored in their browser via
localStorage, same as Redlib's REDLIB_DEFAULT_* vars).
| Name | Default | Allowed values |
|---|---|---|
RDVWR_DEFAULT_THEME | dark | dark, light, system |
RDVWR_DEFAULT_LAYOUT | card | card, compact, minimal |
RDVWR_DEFAULT_SUB_SORT | hot | hot, new, top, rising, controversial |
RDVWR_DEFAULT_SUB_TIME | day | hour, day, week, month, year, all |
RDVWR_DEFAULT_COMMENT_SORT | confidence | confidence, top, new, controversial, old, qa |
RDVWR_DEFAULT_HOME_FEED | personalized | personalized, subscribed, popular |
RDVWR_DEFAULT_PERSONALIZED_HOME | 1 | 0 turns the personalized home feed off by default (it only applies with pasted cookies or a Reddit login) |
RDVWR_DEFAULT_PAGINATION | 0 | 1 disables infinite scroll in favor of a "load more" button |
RDVWR_DEFAULT_SHOW_AVATARS | 0 | 1 shows profile pictures |
RDVWR_DEFAULT_SHOW_AWARDS | 1 | 0 hides award icons on posts and comments |
RDVWR_DEFAULT_LINK_EXTERNAL_MEDIA | 0 | 1 links out to third-party media instead of embedding it |
REDDIT_LOGIN=1 adds a "Reddit account" section to settings with log in / log out. Logged in, Home shows that account's personalized feed (on requests from the server's own machine only, and switchable off with the "Personalized home feed" setting, which also covers pasted cookies). Local requests also read Reddit as the account (so posts show your vote), and get up/down vote arrows on posts and comments, in the JS app and the no-JS pages. The subscribe button becomes join/leave on the real subreddit, and the Subscribed feed (also available without JS at /subscribed) becomes the account's own front page: every subreddit it has joined, with no 50-subreddit cap, and the post view gets a comment box plus reply buttons. A "+" button in the header (or /submit without JS) creates text, link, image, gallery and video posts, with optional flair (the subreddit's own flair list, including required and editable flairs); comments can carry one image or GIF. Uploads go straight from the server to Reddit: images/GIFs up to 20 MB, videos up to 100 MB (held in memory, so mind the size on a small machine). Video posts need ffmpeg on the server for the poster frame Reddit requires, and a comment with an image is sent as rich text, so markdown formatting in that comment isn't applied. A profile page at /account (linked in the header) lists the account's own posts and comments with edit and delete, changes or removes its profile picture, and signs out. None of these controls ever appear on the public site. Reddit no longer issues API apps, so there's no OAuth: sign in on reddit.com in your own browser, then paste that session's cookies into the form (F12 → Application → Cookies → right-click the reddit.com row → Copy all as header value). The server checks them against Reddit and stores them.
Login stays on the server: the cookies go only to Reddit, are never sent back to the browser, and are kept in .reddit_login.json (mode 0600, override with REDDIT_LOGIN_FILE). The login routes only answer requests coming directly from the machine running the server (not through a reverse proxy), so use localhost or an SSH tunnel. Logging out deletes the file. Needs a writable disk, so it won't work on Vercel.
PROXY_MEDIA=1 routes images, videos and gifs from Reddit, Imgur and Giphy through the server (/api/m/), so the browser never contacts those CDNs directly.
[!WARNING] All media bandwidth then flows through the server.
ALL_PROXY| (unset) |
Forward proxy for all outbound Reddit/media requests, e.g. socks5h://127.0.0.1:9050 or http://user:pass@host:port. Sets both HTTP_PROXY and HTTPS_PROXY at once (same convention as Redlib). |
HTTP_PROXY / HTTPS_PROXY | (unset) | Same as ALL_PROXY but scoped to one scheme. http://, https://, socks4://, socks4a://, socks5://, and socks5h:// proxy URLs are all supported. |
RDVWR_DEFAULT_NSFW_BLUR |
0 |
1 blurs NSFW thumbnails |
RDVWR_DEFAULT_NSFW_HIDE | 0 | 1 hides NSFW posts |
RDVWR_DEFAULT_NSFW_SEARCH_HIDE | 0 | 1 hides NSFW content in search |
RDVWR_DEFAULT_MARK_READ | 1 | 0 stops marking posts as read on scroll |
RDVWR_DEFAULT_HIDE_READ_HOME (experimental) | 0 | 1 hides read posts on the home feed. No settings-panel toggle; set via env var only. |
RDVWR_DEFAULT_HIDE_READ_SUB (experimental) | 0 | 1 hides read posts in subreddits. No settings-panel toggle; set via env var only. |