Skip to content

Commit 3aa6c30

Browse files
authored
Merge pull request #1 from AndroidIRCx/develop
Add Flutter IRC app foundation and branding
2 parents edb38ef + 935d912 commit 3aa6c30

66 files changed

Lines changed: 2872 additions & 298 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 160 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,166 @@
1-
# androidircx
1+
# AndroidIRCx Flutter
22

3-
A new Flutter project.
3+
Flutter rewrite of AndroidIRCx, focused on preserving behavior, features, and UX parity with the
4+
existing React Native application.
45

5-
## Getting Started
6+
## Current Status
67

7-
This project is a starting point for a Flutter application.
8+
This repository is an active rewrite in progress.
89

9-
A few resources to get you started if this is your first Flutter project:
10+
Implemented in the current Flutter app:
1011

11-
- [Learn Flutter](https://docs.flutter.dev/get-started/learn-flutter)
12-
- [Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
13-
- [Flutter learning resources](https://docs.flutter.dev/reference/learning-resources)
12+
- network list and add/edit flow
13+
- basic IRC socket connection lifecycle
14+
- server, channel, and query tabs
15+
- basic message sending and receiving
16+
- local persistence for networks, tabs, message history, and a small settings set
17+
- reconnect banner and basic connection status UX
1418

15-
For help getting started with Flutter development, view the
16-
[online documentation](https://docs.flutter.dev/), which offers tutorials,
17-
samples, guidance on mobile development, and a full API reference.
19+
Not implemented yet in full parity:
20+
21+
- CAP/SASL full flow
22+
- multi-network orchestration parity
23+
- advanced numerics and command coverage
24+
- notifications/background behavior
25+
- encryption
26+
- DCC/media
27+
- monetization and security platform features
28+
29+
The feature list below describes the target AndroidIRCx parity scope, not the current Flutter
30+
implementation status.
31+
32+
## 🔐 Security
33+
34+
- **TLS/SSL** -- full encrypted connection support
35+
- **SASL** -- PLAIN, SCRAM-SHA-256, EXTERNAL (client certificates)
36+
- **E2E Encryption** -- libsodium XChaCha20-Poly1305 with context-bound AAD
37+
- **Secure Storage** -- device Keychain for secrets (AsyncStorage fallback with warning)
38+
- **App Lock** -- PIN and biometric with auto-lock on background/launch
39+
- **Kill Switch** -- emergency disconnect and optional data wipe
40+
- **Play Integrity** -- Google Play Integrity verification
41+
42+
43+
## 🤝 Contributing
44+
45+
AndroidIRCX is open source and contributions are welcome.
46+
47+
**Areas where you can help:**
48+
49+
- IRC protocol -- new IRCv3 capabilities, IRCd-specific features
50+
- Testing -- more edge cases, integration tests
51+
- Translations -- add or improve translations via Transifex
52+
- UI/UX -- accessibility, new themes, layout improvements
53+
- Documentation -- guides, tutorials, examples
54+
- Security -- audit, improvements, new encryption features
55+
56+
- **Before submitting a PR:**
57+
58+
```bash
59+
flutter analyze
60+
flutter test # Must pass all
61+
```
62+
63+
## 📝 IRC Protocol Compliance
64+
65+
| Standard | Coverage |
66+
|----------|------------------------------------------------|
67+
| RFC 1459 | Full compliance |
68+
| RFC 2812 | Extended numeric support (390+ handlers) |
69+
| IRCv3 | 27 capabilities requested, full implementation |
70+
| SASL | PLAIN + SCRAM-SHA-256 (RFC 7677) + EXTERNAL |
71+
| DCC | SEND, CHAT |
72+
| CTCP | Full (VERSION, TIME, PING, ACTION, etc.) |
73+
74+
---
75+
76+
## 🎨 Credits & Inspiration
77+
78+
**IRCap** (c) Carlos Esteve Cremades, 1997-2026 - the legendary mIRC script that inspired
79+
AndroidIRCX's away system, protection features, writing styles, and the IRcap theme. If you used
80+
mIRC in the 2000s, you probably know IRCap. Its futuristic design and complete feature set set the
81+
bar for what an IRC experience should be.
82+
83+
**IRcap theme for AndroidIRCX** by ARGENTIN07, based on the original IRCap theme.
84+
85+
**Translations:** ARGENTIN07 and Cubanita83 (Spanish), Yusbastian Lemon (Indonesian). See the full
86+
credits in the app's Credits screen.
87+
88+
As an open-source creator, I deeply respect the work of **Linus Torvalds** and **Richard Stallman**
89+
for the free/open-source software movement. Their vision and persistence were a direct inspiration
90+
for building this app as open source.
91+
92+
[![Linux](https://img.shields.io/badge/Linux-Tux-FCC624?logo=linux&logoColor=black)](https://www.kernel.org/)
93+
[![GNU](https://img.shields.io/badge/GNU-Project-A42E2B?logo=gnu&logoColor=white)](https://www.gnu.org/)
94+
95+
---
96+
97+
## 📄 License
98+
99+
**GNU General Public License v3.0 or later (GPL-3.0-or-later)**
100+
101+
Copyright (C) 2025-2026 Velimir Majstorov
102+
103+
This program is free software: you can redistribute it and/or modify it under the terms of the GNU
104+
General Public License as published by the Free Software Foundation, either version 3 of the
105+
License, or (at your option) any later version.
106+
107+
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
108+
even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
109+
the [GNU General Public License](LICENSE.md) for more details.
110+
111+
You should have received a copy of the GNU General Public License along with this program. If not,
112+
see <https://www.gnu.org/licenses/>.
113+
114+
---
115+
116+
## 🤖 AI Usage Disclaimer
117+
118+
This project was built with modern tools, including AI-assisted development.
119+
120+
Like robotics in manufacturing, autopilot systems in agriculture, and autocomplete in software,
121+
AI is a tool -- no more, no less.
122+
123+
**AI did not build this project on its own.**
124+
Every decision, architectural choice, security consideration, and final line of code was reviewed,
125+
validated, and maintained by a human engineer with more than 25 years of professional experience.
126+
127+
AI did not replace engineering judgment; it accelerated routine work so more time could be spent on
128+
architecture, quality, and usability.
129+
130+
If you prefer software created without automation or AI assistance, that choice is fully respected.
131+
At the same time, refusing tools has never stopped progress -- it has only determined who
132+
participates in shaping it.
133+
134+
This project exists to contribute something real to open source, with practical value and
135+
long-term maintenance. You are welcome to:
136+
137+
- use it or study it
138+
- fork it or improve it
139+
- or simply ignore it
140+
141+
All are valid choices.
142+
143+
Builders shape the future in silence. Spectators explain it when the work is already done.
144+
145+
In the end, technology moves forward with or without permission. The only question is who chose to
146+
be part of it.
147+
148+
Some build loudly. Others build correctly.
149+
150+
Those who recognize the work will understand. Time will explain the rest.
151+
152+
🜂🜃🜂
153+
154+
---
155+
156+
<p align="center">
157+
<a href="https://AndroidIRCx.com">
158+
<img src="https://AndroidIRCx.com/android-icon-192x192.webp" width="64" height="64" alt="AndroidIRCx">
159+
</a>
160+
</p>
161+
162+
<p align="center">
163+
<b><a href="https://androidircx.com">AndroidIRCx.com</a></b>
164+
</p>
165+
166+
---

android/app/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ plugins {
66
}
77

88
android {
9-
namespace = "com.example.androidircx"
9+
namespace = "com.androidircx.flutter"
1010
compileSdk = flutter.compileSdkVersion
1111
ndkVersion = flutter.ndkVersion
1212

@@ -21,7 +21,7 @@ android {
2121

2222
defaultConfig {
2323
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
24-
applicationId = "com.example.androidircx"
24+
applicationId = "com.androidircx.flutter"
2525
// You can update the following values to match your application needs.
2626
// For more information, see: https://flutter.dev/to/review-gradle-config.
2727
minSdk = flutter.minSdkVersion

android/app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
22
<application
3-
android:label="androidircx"
3+
android:label="@string/app_name"
44
android:name="${applicationName}"
55
android:icon="@mipmap/ic_launcher">
66
<activity

android/app/src/main/kotlin/com/example/androidircx/MainActivity.kt renamed to android/app/src/main/kotlin/com/androidircx/flutter/MainActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.androidircx
1+
package com.androidircx.flutter
22

33
import io.flutter.embedding.android.FlutterActivity
44

4 KB
Loading
2.2 KB
Loading
6.18 KB
Loading
11.4 KB
Loading
17.7 KB
Loading
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<resources>
2+
<string name="app_name">AndroidIRCx Flutter</string>
3+
</resources>

0 commit comments

Comments
 (0)