An open-source reimplementation of the Discord Android app

Overview

OpenCord

Discord

An open-source reimplementation of the Discord Android app.

Chat Drawer

Why does this exist?

Current Discord app sucks as it doesn't support any type of customization (themes, plugins, layout etc...). The goal of this project is to reimagine the Discord experience on mobile devices.

Status of OpenCord

  • Full (or at least most essential) Discord feature implementation
  • Theme support
  • Plugin support
  • Multiplatform support (Windows, macOS, Linux, Android)

Building

Build the project

Windows:

.\gradlew.bat build

Linux/macOS:

chmod +x ./gradlew && ./gradlew build

Build APKs

Discord Version

Windows:

.\gradlew.bat assembleDiscordDebug

Linux/macOS:

./gradlew assembleDiscordDebug

Fosscord Version

Windows:

.\gradlew.bat assembleFosscordDebug

Linux/macOS:

./gradlew assembleFosscordDebug

FAQ

Will this client support themes/plugins?

Yes, but my first priority is to implement most of the stock client's features

Is this against Discord TOS?

Unfortunately, it is. Although I'm pretty sure Discord won't start banning anyone for using OpenCord, considering how many mods of the stock clients already exist. Even with that, use this client at your own risk.

Where download???!?!?!?!?

Head over to repository actions, click the latest run and download the app artifact. After downloading, unzip it. Inside you'll find 2 files: app-discord-debug.apk and app-fosscord-debug.apk.

Differences between these versions

The discord version is considered as the standard version of the app, while the fosscord version is meant to be used by users familiar with Fosscord. Fosscord version of the app redirects to Fosscord API, CDN and Gateway instead of Discord's URLs, allowing you to fully experience OpenCord without being scared of getting banned by Discord.

Stable version wen?

Soon™

Comments
  • app crashes on login

    app crashes on login

    Hi, I've installed the latest apk however once I press the login button after entering my email and password. I'm not sure how to get debug info on android so if there is any info you need you might need to point me towards how to get it.

    I'm running lineageos 18 (android 11).

    opened by Spagett1 15
  • Unable to Login in.

    Unable to Login in.

    Hi I am trying to log in with my alt account nothing seems to happen when I log in it is stuck in login page and when try pressing the log button nothing seems to happen

    opened by IamNickerson 13
  • Cannot log in

    Cannot log in

    I can't log in, idk why. What I know is I have a working internet connection. And to register button does not working, I think it just there as a display. Need to rework and stabilize the application. I love the concept and the lightness of it. I hope these matter will soon be fixed.

    opened by jingoniii 11
  • How can I download the app?

    How can I download the app?

    I want to try this app but as the released version is outdated also not usable(I couldn't login) and I can't find anything in action tab. So, how can I downland this app?

    opened by Drangonfly30 7
  • Why does the Readme say OpenCord is against the Discord ToS?

    Why does the Readme say OpenCord is against the Discord ToS?

    https://github.com/MateriApps/OpenCord#is-this-against-discord-tos

    I read the Discord ToS and it doesn't prohibit third-party clients anywhere, could you please point me to the Discord ToS clause that prohibits this?

    Or does OpenCord violate Discord ToS for other reasons? If so which ones

    opened by 12932 5
  • Crash when trying to login on fosscord

    Crash when trying to login on fosscord

    It seems like it cannot deserialize captcha response which does not exist on fosscord

    01-27 02:05:12.272 E/AndroidRuntime(11588): FATAL EXCEPTION: DefaultDispatcher-worker-1
    01-27 02:05:12.272 E/AndroidRuntime(11588): Process: com.xinto.opencord.kenecord, PID: 11588
    01-27 02:05:12.272 E/AndroidRuntime(11588): com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
    01-27 02:05:12.272 E/AndroidRuntime(11588): 	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:226)
    01-27 02:05:12.272 E/AndroidRuntime(11588): 	at com.google.gson.Gson.fromJson(Gson.java:963)
    01-27 02:05:12.272 E/AndroidRuntime(11588): 	at com.google.gson.Gson.fromJson(Gson.java:928)
    01-27 02:05:12.272 E/AndroidRuntime(11588): 	at com.google.gson.Gson.fromJson(Gson.java:877)
    01-27 02:05:12.272 E/AndroidRuntime(11588): 	at com.google.gson.Gson.fromJson(Gson.java:848)
    01-27 02:05:12.272 E/AndroidRuntime(11588): 	at com.xinto.opencord.ui.screens.login.LoginScreenKt$LoginScreen$2$1$3$1.invokeSuspend(LoginScreen.kt:187)
    01-27 02:05:12.272 E/AndroidRuntime(11588): 	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    01-27 02:05:12.272 E/AndroidRuntime(11588): 	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
    01-27 02:05:12.272 E/AndroidRuntime(11588): 	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
    01-27 02:05:12.272 E/AndroidRuntime(11588): 	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
    01-27 02:05:12.272 E/AndroidRuntime(11588): 	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
    01-27 02:05:12.272 E/AndroidRuntime(11588): 	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
    01-27 02:05:12.272 E/AndroidRuntime(11588): Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
    01-27 02:05:12.272 E/AndroidRuntime(11588): 	at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:384)
    01-27 02:05:12.272 E/AndroidRuntime(11588): 	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:215)
    01-27 02:05:12.272 E/AndroidRuntime(11588): 	... 11 more
    
    opened by keneshindev 5
  • refactor: organize domain models & mappers

    refactor: organize domain models & mappers

    • separate each domain model into its own file
    • move each entity/domain mapper into the related file (no more 1000 line files)
    • api models/mappers will come later when i organize those too
    opened by rushiiMachine 3
  • Would it be possible to support fosscord.com

    Would it be possible to support fosscord.com

    This is only a simple question and more for the awareness reason that www.fosscord.com does not have a proper non-web client.
    It would be cool to have an open client for Android of a instance/service that is also open and free.

    opened by BoQsc 3
  • General mod podge of potentional

    General mod podge of potentional "bugs"

    The app looks great! Loving the color palette and the login design. The whole reason why I checked out the app in the first place is that the official app has started to overheat my low-end phone, which causes my phone to restart. Here are a few bugs I've noticed in OpenCord:

    • [ ] No friend DM's (unsure if they reach out to you)
    • [ ] Logging in for the first time takes a bit for the guilds/channels to load
    • [ ] Users don't have role colored names
    • [ ] No "mark all as read" option on a server (which would be helpful to have since every channel is marked as "unread" when logging in)
    • [ ] The app seems to freeze for 100ms or so when a new message is sent, giving off a single-threaded app vibe
    • [ ] The swipe interaction is weird, working sometimes, ignoring your swipe other times
    • [ ] Guilds aren't ordered as they are on mobile or desktop (I believe there's an undocumented endpoint for this)
    • [ ] No obvious way to look at the channel topic
    • [ ] Member list doesn't seem to function
    • [ ] Mentions altogether don't seem to function correctly
    • [ ] Codeblocks render inaccurately
    • [ ] Buttons
    • [ ] Stage channels render as normal channels
    • [ ] Channels aren't appropriately hidden (say, when you don't have permission to view)
    • [ ] Guilds without an icon do not produce the same icon that the official clients use
    • [ ] Settings don't show anything
    • [ ] Lack of message attachment support

    OpenCore images: https://cdn.discordapp.com/attachments/964960714047508494/974836234818039848/Screenshot_20220513-194915-915.png https://cdn.discordapp.com/attachments/964960714047508494/974836235254243378/Screenshot_20220513-194931-376.png https://cdn.discordapp.com/attachments/964960714047508494/974836235547865128/Screenshot_20220513-194941-104.png

    Discord image (zoom): https://cdn.discordapp.com/attachments/964960714047508494/974836637735460964/Screenshot_20220513-195235-485.png

    Other than these things, the app is really good. The only things that are truly stopping me from using the app as a daily driver is the lack of DM support and the "mark channels as read" option. I understand well that the app is far from finished and I'm looking forward to the finished product. I would love to contribute however I'm more of a C# developer than someone who uses Java (additionally I've never even touched UI, so I could only help clean up logical/simple operations).

    Keep up the great work! You're doing amazing. DN

    opened by OoLunar 3
  • Laggy af

    Laggy af

    Doing literally anything (tapping a guild, loading a text channel, etc) is very laggy on my Pixel 6. My guess is that more data (guilds, basic guild channel data) should be preloaded.

    opened by ThatOneCalculator 2
  • Light theme

    Light theme

    Even when setting my phone to light mode, the app is still in dark mode. As this uses MD3, dark/light mode based on the system theme should be pretty easy.

    opened by ThatOneCalculator 2
  • refactor: navigation, viewmodels and stores

    refactor: navigation, viewmodels and stores

    Currently, stores rely on our custom Event class, which is very unreliable when new subscribers try to observe old data. Instead of creating events, this PR makes use of Room's Flow observables to provide the latest data. Alongside that, stores now sort the data before they're emitted to viewmodel, which decreases the UI overhead since compose now doesn't need to sort channels and guilds manually.

    opened by X1nto 0
Releases(v0.0.1)
  • v0.0.1(Apr 11, 2022)

    Initial Release.

    THIS BUILD IS OUTDATED. USE LATEST MAIN BRANCH BUILD FROM actions master branch INSTEAD.

    Changelog

    • Material You UI.
    • Supports displaying guilds, channels, and messages (very limited).
    • Supports sending a message (very limited).
    • Real-time messages.

    Notes

    • Captcha probably doesn't work
    • Fosscord version is not attached as there are issues with it.
    • USE ALT ACCOUNTS ONLY!!!
    Source code(tar.gz)
    Source code(zip)
    app-discord-release.apk(7.72 MB)
Owner
FOSS Material You clients for popular web apps.
null
Ride-Sharing Uber Lyft Android App - Learn to build a ride-sharing Android Taxi Clone App like Uber, Lyft - Open-Source Project By MindOrks

Ride-Sharing Uber Lyft Android App - Learn to build a ride-sharing Android Taxi Clone App like Uber, Lyft - Open-Source Project By MindOrks

MindOrks 1.2k Dec 29, 2022
Experimental Discord Mobile Rich Presence (Android)

MRPC Experimental Discord Mobile Rich Presence (Android) How does it work? It's pretty simple. Connect to the Discord Gateway as a normal Discord Clie

Duy Tran Khanh 41 Dec 25, 2022
A messaging social platform based on Discord for Desktop and Android.

AP-FinalProject A secure messaging social platform based on Discord for Desktop and Android. This is my final project for Advanced-Programming (AP) in

AmirHosseinAghajari 10 Oct 1, 2022
🐦 Loritta's Social media relayer via Discord Webhooks micro-service

?? SocialRelayer ?? SocialRelayer is a social media relayer to Discord via webhooks, pulling Loritta's guild configurations to automatically register

Loritta 6 Jun 2, 2022
AsukaBot - A simple Kotlin Discord Bot

The Discord bot of the serber, a private Discord server. Asuka is a Discord But running on the JDA API but made in kotlin.

Yann ItzPeaxel 2 Apr 24, 2022
A Discord audio player that streams audio from the desktop.

Synced A Discord audio player that streams audio from the desktop. Synced runs as a bot that plays audio to your selected Discord server. You can cont

Leo Denault 3 Oct 23, 2022
Mindusty <--> Discord

Minducord Mindustry <--> Discord Setup Go to Releases and download minducord.jar. After download, paste it to mods folder and run server. If you can s

Giyoung Ryu 1 Dec 12, 2021
Urban Dictionary discord bot.

Urban Dictionary Installation & Setup 1. Clone the repository git clone https://github.com/thexxiv/urbandictionary-discord-bot.git 2. Navigate to the

XXIV 0 Jan 17, 2022
DiscordBot - Small Discord bot using JDA

Discord bot written in kotlin and using JDA Use it yourself ./gradlew build crea

chell 2 Feb 2, 2022
Photon Framework provides cool way to Discord Slash Commands 👩‍💻 🚧

Photon Framework provides cool way to Discord Slash Commands ??‍?? ??

Codename Photon 16 Dec 20, 2022
🎧 Hacky last.fm Discord rich presence

LastFmRichPresence ?? Hacky last.fm Discord rich presence How to use?

MrPowerGamerBR 10 Oct 14, 2022
Synapse Moderation Bot - A bot for managing and moderating our community Discord server

Synapse Moderation Bot A bot for managing and moderating our community Discord server. Note This bot is not public. While you can host it on your own,

Synapse Technologies, LLC 1 Jul 16, 2022
TimmyBot is a discord bot based on Discord4J and LavaPlayer

TimmyBot TimmyBot is a discord bot based on Discord4J and LavaPlayer Invite Click here to invite Timmy to your server Commands ?play - Plays a song, e

Ian de Villiers 0 Apr 21, 2022
marudor.de for Discord

hafalsch marudor.de for Discord Features Train Station Search Journey details Träwelling Check In Sources marudor.de - The Marudor API is used to retr

Mikbot 7 Nov 19, 2022
Simple metrics exporter HTTP server for Prometheus meant to be used for private Discord servers.

Discord Prometheus Exporter Simple metrics exporter HTTP server for Prometheus meant to be used for private Discord servers. Thanks to the creator of

Subham 2 Nov 29, 2022
A simple Discord bot that aims to provide a snapshot of the join logs given a range of time for servers.

?? What is Humpy Dumpy? Humpy Dumpy is a simple Discord bot that aims to provide a snapshot of the join logs given a range of time for servers. It was

Miu 2 Aug 29, 2022
A Discord bot heavily inspired by Ultimate Bravery to spice up your Pokemon Unite experience.

UniteBraveryBot ?? A Discord bot heavily inpired by Ultimate Bravery to spice up your Pokemon Unite experience. Required Permissions ?? View Channels

Alexander Deledda 2 Sep 8, 2022
All things generative! Discord Bot

Thingy Discord bot to generate images based on a text prompt - way more than just that! Through a wide variety of tools, you can alter your generated

Peter Willemsen 17 Dec 15, 2022
Open-source modular Android App IDE for Android

Blokkok Blokkok is an open-source modular Android App IDE for Android. Every components of the IDE are separated from each other by modules, every mod

null 14 Dec 16, 2022