Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
240 changes: 121 additions & 119 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,120 +1,122 @@
# The Wallpaper Company

A production-ready Flutter wallpaper app for the Kroozelabs Intern Challenge.

## Screenshots

![App Screenshot](screenshots.png)

---

## Setup & Installation

1. **Clone the repository:**
```bash
git clone <your-repo-url>
cd the_wallpaper_company
```
2. **Install dependencies:**
```bash
flutter pub get
```
3. **Run the app:**
```bash
flutter run
```

## Firebase Setup

1. Install the FlutterFire CLI:
```bash
dart pub global activate flutterfire_cli
```
2. Login to Firebase:
```bash
flutterfire login
```
3. Initialize Firebase in your project:
```bash
flutterfire configure
```
- Select your Firebase project and platforms (Android/iOS).
- This will generate `lib/firebase_options.dart` automatically.
4. Add `google-services.json` (Android) to `android/app/`.
5. Add `GoogleService-Info.plist` (iOS) to `ios/Runner/`.
6. Enable **Cloud Messaging** and **Remote Config** in the Firebase Console.

For more details, see the [FlutterFire CLI documentation](https://firebase.flutter.dev/docs/cli/).

## Remote Config Keys Used

- `dark_mode_enabled` (bool): Toggles dark mode in the app.
- Example usage: `remoteConfig.getBool('dark_mode_enabled')`

## JSON Endpoint Usage

Wallpapers are fetched from:
```
🚀 Setup & Installation
1. Clone the repository
git clone <your-repo-url>
cd the_wallpaper_company

2. Install dependencies
flutter pub get

3. Run the app
flutter run

🔥 Firebase Setup
1. Install the FlutterFire CLI
dart pub global activate flutterfire_cli

2. Login to Firebase
flutterfire login

3. Initialize Firebase
flutterfire configure


Select your Firebase project and supported platforms (Android/iOS).

This automatically generates lib/firebase_options.dart.

4. Add platform-specific configuration files

google-services.json → android/app/

GoogleService-Info.plist → ios/Runner/

5. Enable required Firebase services

Cloud Messaging

Remote Config

📘 Reference: FlutterFire CLI Documentation

⚙️ Remote Config Keys
Key Type Description
dark_mode_enabled bool Toggles dark mode in the app.

Usage Example:

remoteConfig.getBool('dark_mode_enabled')

🌐 JSON Endpoint

Wallpapers are fetched from the endpoint below:

https://jsonkeeper.com/b/ORGZR
```
- The endpoint returns a list of wallpaper objects in JSON format.
- Each wallpaper object contains: `id`, `title`, `imageUrl`, `category`.


## Features
- Home screen with category carousel
- Staggered grid and shimmer loading(Printerest Style)
- Fullscreen preview and favorites
- Pull-to-refresh and double-tap to like animation
- Firebase Remote Config for dark mode
- Firebase Cloud Messaging for notifications
- Provider for state management
- Persistent image cache
- Modern UI

## Suggested Feature Updates for Open Source Contributions

Here are some suggested feature updates for contributors to work on:

### Beginner-Friendly Tasks
- **Bug Fixes:**
- Identify and fix small UI bugs or alignment issues.
- Resolve any redundant code or formatting inconsistencies.

### New Features
- **Dark Mode Toggle:**
- Add a toggle button to enable/disable dark mode.
- **Search Wallpapers:**
- Implement a search bar to find wallpapers by title or category.
- **Share Wallpaper:**
- Add functionality to share wallpapers via social media or messaging apps.

### UI/UX Improvements
- **Onboarding Screens:**
- Create an onboarding flow for first-time users.
- **Animations:**
- Add smooth transitions and animations for better user experience.

### Localization
- **Multi-Language Support:**
- Add support for at least two additional languages.

### Testing
- **Unit Tests:**
- Write unit tests for existing features.
- **Integration Tests:**
- Ensure the app works seamlessly across different platforms.

### Documentation
- **Update README:**
- Add detailed setup instructions for contributors.
- **Code Comments:**
- Add comments to explain complex logic in the codebase.

### Open Issues
- Create GitHub issues for the above tasks with labels like `good first issue` and `help wanted` to guide contributors.

---

## License
MIT


Each wallpaper object includes:

{
"id": "1",
"title": "Abstract Sky",
"imageUrl": "https://example.com/image.jpg",
"category": "Nature"
}

✨ Features

✅ Home screen with category carousel
✅ Staggered grid layout (Pinterest-style)
✅ Shimmer loading effect
✅ Fullscreen preview and favorites
✅ Pull-to-refresh and double-tap like animation
✅ Firebase Remote Config for dark mode
✅ Firebase Cloud Messaging notifications
✅ Provider for state management
✅ Persistent image caching
✅ Modern, responsive UI

💡 Suggested Feature Updates (For Open Source Contributors)
🧩 Beginner-Friendly Tasks

Fix small UI bugs or alignment issues.

Clean up redundant code or inconsistent formatting.

🌙 New Features

Dark Mode Toggle: Add a manual dark mode switch.

Search Wallpapers: Implement a search bar by title or category.

Share Wallpaper: Enable sharing via social media or chat apps.

🎨 UI/UX Enhancements

Onboarding Screens: Introduce an onboarding experience for new users.

Animations: Add smooth transitions and micro-interactions.

🌍 Localization

Add multi-language support (e.g., Hindi, Spanish).

🧪 Testing

Write unit tests for existing logic.

Add integration tests to ensure platform consistency.

📚 Documentation

Improve the README with contributor guidelines.

Add inline comments for complex sections of the codebase.

🐞 Open Issues

Create GitHub issues for the above enhancements with labels like:
good first issue, help wanted, enhancement.

🪪 License

This project is licensed under the MIT License.
Loading