Discover the world of words.
Lexity is a Flutter-based mobile application designed for vocabulary expansion and word discovery. Leveraging a tactile, swipe-based interface, Lexity presents users with a curated "Lexicon" of rare, beautiful, and interesting words, complete with definitions, etymologies, and usage examples.
Whether you are a logophile looking to expand your vernacular or a developer exploring Flutter architecture, this project serves as a robust example of a content-rich, visual, animation-heavy & interactive mobile experience.
-
Swipe to Discover: An intuitive card-stack interface allowing users to swipe through a vast collection of words.
-
Rich Word Details: Each card provides deep insights, including:
-
Definition & Usage: Clear meanings and sentence examples.
-
Etymology: The history and origin of the word.
-
Pronunciation: Guides on how to speak the word correctly.
-
Rarity Score: Learn how unique the word is.
-
Curated Collections: Save your favorite words to a personal "Liked" library for quick reference.
-
Dynamic Theming: The application background adapts dynamically to the color palette of the current word card.
-
Cross-Platform: Built for Android, iOS, and Web.
Lexity is built using Flutter and relies heavily on Firebase for its backend infrastructure.
-
Frontend: Flutter (Dart)
-
Navigation: GoRouter
-
State Management: Provider & Local State (
FFAppState) -
Backend: Firebase
-
Firestore: NoSQL database for storing the
lexicon(words) and user data. -
Authentication: Firebase Auth (Anonymous, Email, Social).
-
Cloud Functions: Server-side logic.
-
UI/UX:
-
flutter_card_swiper: For the tinder-like swipe mechanic. -
flutter_animate: For fluid UI transitions. -
google_fonts: Custom typography. -
auto_size_text: Responsive text sizing.
Follow these steps to set up the project locally.
- Flutter SDK (Version >=3.0.0 <4.0.0)
- Dart SDK
- A Firebase Project (for backend connectivity)
- Clone the Repository
git clone https://github.com/sgardoll/lexity.git
cd lexity
- Install Dependencies
flutter pub get
- Firebase Configuration
This project requires a
firebase_options.dartfile or manual configuration files (google-services.json/GoogleService-Info.plist) to connect to your Firebase instance.
- Use the FlutterFire CLI to configure your project:
flutterfire configure
- Ensure your Firestore database has a collection named
lexicon.
- Run the App
flutter run
The project follows a modular structure, partially influenced by FlutterFlow patterns.
lib/
├── auth/ # Firebase Authentication logic
├── backend/ # Backend connectivity (Firestore, API calls)
│ ├── schema/ # Data models (LexiconRecord, UsersRecord)
│ └── firebase/ # Firebase initialization and config
├── components/ # Reusable UI widgets (CardFront, CardBack)
├── flutter_flow/ # Utility classes, themes, and animations
├── liked/ # "Liked Words" screen logic
├── start/ # Main Swipe/Home screen logic
├── main.dart # Application entry point and routing
└── index.dart # Barrel file for easy imports
LexiconRecord(lib/backend/schema/): The primary data model representing a word. Contains fields forterm,definition,colours,audio, etc.StartWidget(lib/start/): The home screen. Implements theFlutterFlowSwipeableStackto render the deck of word cards.LikedWidget(lib/liked/): A list view displaying words the user has saved.FrontWidget&CardBackWidget: Define the UI for the front (visuals/term) and back (details/definition) of the flashcards.
This project is intended for private use. See pubspec.yaml:
publish_to: 'none'
Contributions are welcome! If you find a bug or want to add a new feature:
- Fork the repository.
- Create your feature branch (
git checkout -b feature/AmazingFeature). - Commit your changes (
git commit -m 'Add some AmazingFeature'). - Push to the branch (
git push origin feature/AmazingFeature). - Open a Pull Request.