Introduction to the Enigma Project
Enigma is a minimalist, one-to-one chat application meticulously crafted for privacy and simplicity. This locked-down chat app offers a secure environment for users to communicate intimately without the clutter and unwanted noise typical of many chat platforms. Here's a closer look at what makes Enigma stand out:
Getting Started
For those interested in using Enigma, it's important to know that this application is built on the Flutter framework. To begin using Enigma, follow these steps:
- Set Up Flutter: Make sure you have Flutter installed. Follow the Flutter Getting Started Guide if required.
- Firebase Configuration: Enigma leverages Firebase. Set up a Firebase project and enable the following features:
- Firebase Phone Authentication for secure user authentication.
- Cloud Firestore (note: not Realtime Database) for storing chat data.
- Firebase Storage for image storage.
- Firebase In-App Messaging for sending custom messages.
- Configure Your Project: Download the
google-services.json
file from Firebase and place it in theandroid/app
directory of your project. - Install Dependencies: Use
flutter packages get
to download necessary packages. - Run the Application: Use a device or emulator and execute
flutter run
to launch Enigma.
Notifications Setup
To ensure notifications are functioning, follow these steps:
- Enable FCM: First, activate Firebase Cloud Messaging in the Firebase Console.
- Configure Functions: Copy the
functions
directory to your project root. - Deploy Functions: Run
firebase deploy --only functions
(note:firebase-cli
must be installed for this).
Security and Firebase Rules
The app uses a basic security rule for Firebase data storage that allows read/write if the user is authenticated (request.auth.uid != null
). This can be adjusted for more restrictive access as needed. Detailed instructions for customizing rules can be found here.
Features
Enigma is designed with several key features:
- Authentication: Access hidden and locked chats with passcode authentication, or use fingerprint recognition if available on your device.
- End-to-End Encryption: Enigma ensures messages are seen only by intended recipients through robust encryption.
- Hide and Lock Chats: Additional security is provided through 'hide' and 'lock' functions, controlled by user authorization.
- End Conversations: Tidy up after chats by swiftly deleting conversation history with a simple swipe.
- Save Messages: Important messages can be locally saved with a double tap for easy access later.
- Minimal Notifications: Users decide when to engage with the app; no nagging notifications ensure a peaceful experience.
- No Forwarding: Built for exclusive one-to-one communication, Enigma does not allow message forwarding.
- Elegant UI: Enjoy a sleek, gesture-friendly interface that maintains functionality without excess design.
- Compact Size: The app comes in at under 10 MB, keeping it light on device storage.
Acknowledgements
Enigma incorporates a passcode widget from an open-source project licensed under the Apache 2.0 License. You can explore the widget here.
Through these thoughtful features and careful integration, Enigma provides a private, clean, and efficient messaging experience. Whether you're seeking advanced security or simply a distraction-free chat app, Enigma has your needs covered.