GithubHelp home page GithubHelp logo

freecodecamp / mobile Goto Github PK

View Code? Open in Web Editor NEW
402.0 18.0 118.0 5.93 MB

freeCodeCamp's open-source mobile app made with Flutter

Home Page: https://contribute.freecodecamp.org

License: BSD 3-Clause "New" or "Revised" License

Kotlin 0.02% Dart 97.32% Swift 0.10% Objective-C 0.01% Ruby 0.44% TypeScript 1.87% Dockerfile 0.08% JavaScript 0.14%
freecodecamp flutter flutter-app android dart hacktoberfest

mobile's Introduction

freeCodeCamp.org Social Banner

Pull Requests Welcome first-timers-only Friendly

freeCodeCamp.org's open-source mobile app

freeCodeCamp.org is an online learning platform that offers a comprehensive curriculum in web development and machine learning. The curriculum is self-paced and available free of charge. Our platform offers interactive coding challenges to help learners expand their skills.

To provide more flexibility, we have adapted the curriculum to a flutter based mobile application. The mobile app aims to provide an alternative option for users who are not able to access a computer or high-speed internet connection. This app may be useful for those who prefer to learn on-the-go or need offline access to the curriculum.

Roadmap

At freeCodeCamp, we're always working to improve our mobile app for our community of learners. Here's a glimpse of what's to come in the future:

  • Our developers Nirajn2311 and Sembauke have been hard at work to make sure all of our tutorials, podcasts, Code Radio, and 'Learn' feature are available on the app.
  • We are now open to hear your feedback, opinion and great ideas to make the app even more user friendly and tailored to your need.
  • In the upcoming updates, we will be focusing on incorporating more interactive features and improving the overall user experience.

We're always looking to make your learning experience even better, and we're excited to hear your thoughts on how we can make the app more valuable to you.

Contributing

The freeCodeCamp.org community is possible thanks to thousands of kind volunteers like you. We welcome all contributions to the community and are excited to welcome you aboard.

If you have any other issues getting started please contact us on the freeCodeCamp Discord Server.

mobile's People

Contributors

a2937 avatar amitamrutiya2210 avatar arice77 avatar chinmay-kb avatar dependabot[bot] avatar dexters-hub avatar mehade369 avatar michelphoenix98 avatar naomi-lgbt avatar nikunjdk avatar nirajn2311 avatar ojeytonwilliams avatar rafaeldavish avatar raisedadead avatar renovate-bot avatar renovate[bot] avatar rishab-ms avatar rohit-ra-2020 avatar sanket6652 avatar sembauke avatar spyy004 avatar wail-mohammed avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mobile's Issues

[testing] add integration tests

As the app gets bigger with more features, we would need more integration tests to make sure nothing is broken during deployment. Currently we have only one integration test in the news component which checks if a news article is bookmarked and visible in the bookmarks view. Both the news component and podcasts component need more integration tests.

Browse open-source e-Books

As a user I want to be able to:

  • browse open-source e-books while offline.
  • search and download e-books when online for later reference, within the app.
  • get a set of 5 e-books to start with when installing the app covering some topics (TBD)
  • delete books when I want, to save space.

App & a11y settings

As a user I want to be able to:

  • change application specific settings separate from user settings.
  • manage notifications that I get.
  • adjust font & color theme
  • set preferences for downloads over wifi / mobile-data or manual

[news] personalized tutorial feed

To make user enjoy the news-component more:

We will need an option for a personalized feed. The user should be able to subscribe to a certain author or subject they like. These authors or subjects will show up in their personalized feed.

It would also be nice to add recommendations of certain subjects that they can subscribe to in the personalized feed and the home feed.

Add Computer Science Flash Cards

We want to add a feature that borrows inspiration and the dataset from the awesome work already done in here: https://github.com/jwasham/computer-science-flash-cards

As a user I want to be able to:

  • browse through a list of flash-card categories, which group cards in logical categories.
  • browse through the cards in a group.
  • look at the question on the card.
  • flip the card to look at the solution / answer.
  • tag a card with a difficulty level (easy/hard/very-hard) as per my comfort & will.
  • browse through cards of a certain difficulty level I tagged.
  • hide cards completely in an archive area.
  • create and update new custom groups (other than the standard set)
  • create and update new custom cards (other than the standard set)
  • add cards to the custom groups.
  • delete cards to the custom groups.

Give more information about the .env file.

Give more information about the .env file.

I think it would be good to add in the "Getting Started" section of the README.md more information about the .env file. If we explain to people how to install and work on a flutter project, it would be normal to explain to them what is the environment in which this project works (databases, auth, etc.)

App Logo Discussion Issue

This issue serves as a discussion thread for the app logo. While discussing the app in our chat, it was brought up that the logo looks a bit squished.

One idea was to add some additional negative space around the logo, but I would love to hear what you all think as well.

How the app appears in my play store
image

Forum PWA on left, our mobile app on right
image

Clean and modular architecture

The current project structure is based on the function only (eg. grouping into service, model, view). As the project grows, it could causing crowd and confusion (eg. ui -> widget folder containing a lot of widget from across feature of the app).

Therefore, I would like to suggest the structure proposed ResoCoder as explained on their web (it's based on Clean Architecture by Uncle Bob).

The project structure would be something like this:

├── core # file that shared across modules in the app
│   ├── config
│   ├── databases
│   ├── datasources
│   ├── entities
│   ├── models
│   ├── router
│   ├── enums
│   └── widgets
└── modules # app modules/feature
    ├── home
    │   ├── data
    │   │   ├── datasources
    │   │   ├── models
    │   │   └── repositories
    │   ├── domain
    │   │   ├── entities
    │   │   ├── repositories
    │   │   └── usecases
    │   └── presentation
    │       ├── pages
    │       ├── viewmodel
    │       └── widgets
    ├── forum
    │   ├── data
    │   │   ├── datasources
    │   │   ├── models
    │   │   └── repositories
    │   ├── domain
    │   │   ├── entities
    │   │   ├── repositories
    │   │   └── usecases
    │   └── presentation
    │       ├── viewmodel
    │       ├── pages
    │       └── widgets
    └── etc

I know this would be huge changes of the codebase, but I think it's worth it to change it now than later when the app grows bigger.

News: functionalities and features

Author:

  • view an authors page
  • view an author bio
  • view the articles an author posted
  • an picture of the author

Tags:

  • when clicking on a tag a new feed with that subject should show up
  • when clicking the feed it should be clear that the feed is on a certain subject

Lazy loading:

  • when dragging on the top of the feed it should refresh
  • when an article is clicked only a part of the article should be loaded
  • a bar that shows how much of the article is left to read

Styling:

  • Tables should have the correct color in fcc style
  • restyle search

Bugs:

  • tables seem to be broken after the lazy-loading update that was implemented.

open in browser or webview in app

Came across some reviews, where people said that they did not like the learn section going to the browser.
I am thinking of giving people the option to choose between them.

Open up a dialog with a message that the web-view (or component) is still in development. The user can choose to stay in the app or go further in the browser. This means we can make both sides happy.

That would also mean that we need to bring back the settings page, where the user can change this option.

Browse Articles from freeCodeCamp News

As a user I want to be able to:

  • View a lightweight feed from the news.
  • Search for topics on the news.
  • Save & Bookmark topics offline on device for later use.
  • Open topics in a browser window (web-view to OS default browser) - similar behavior to Twitter or Google news apps.

Add a privacy policy page

When watching this video about Google Play privacy updates, there is a section that the user should be able to view a privacy policy within the app or a link that leads to an external page.

Otherwise the app might be taken down in the future for privacy violations.

Build fails on Flutter 2.8

Describe the bug
Building this project against Flutter 2.8 fails.

To Reproduce
Steps to reproduce the behavior:

  1. Update flutter to latest version
  2. Build the project

Improve Newsfeed UI

The UI on the newsfeed is basic and can be improved
I would like to Work upon developing and improving the UI of newsfeed to improve is UI/UX, make it more beautiful, appealing and precise.

Action Required: Fix Renovate Configuration

There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

Error type: Cannot find preset's package (github>whitesource/merge-confidence:beta)

[suggestion] Match fonts to the FCC website theme

The mobile app seems to use a single font-family i.e Roboto and the default font styles that come with Flutter. This creates some gap from the content on the FreeCodeCamp website

In order to keep things consistent between the web and mobile, I suggest using the same fonts as the website within the mobile app.
The font used in the website is Lato fonts.google.com/specimen/Lato#standard-styles

Lato is a sans serif typeface family started in the summer of 2010 by Warsaw-based designer Łukasz Dziedzic (“Lato” means “Summer” in Polish). In December 2010 the Lato family was published under the Open Font License by his foundry tyPoland, with support from Google.

I believe that using this typeface would result in a more uniform and legible user experience.

I am ready to work on this issue and bring the new typeface to the app. However, I'd like to know your thoughts on this suggestion before proceeding.

Improve the UI of the progress bar in podcast episode view

Currently the progress bar works but during the initial few seconds the ball doesn't move from the left end. This may confuse users as to whether the progress bar is working or not.

Here's a link with an attempt to fix it but since no progress was being made we reverted back.

Documentation on how to get started on the mobile app

This is what I noted down while I was setting up Flutter and Dart on my system.

Flutter and Dart setup

Windows, Linux, Mac

Notes for users Mac with Apple Silicon

Follow the official guide but make the below 2 changes:

  • Install the Beta build of Android Studio for Apple Silicon - Android Studio Arctic Fox (2020.3.1) Beta 5
    Link for download - https://developer.android.com/studio/archive
  • Download the "arm64" version of SDKs
  • If "flutter doctor" gives an error about Java not found, then the fix for it is to copy the folder "/Applications/Android Studio Preview.app/Contents/jre/Contents" to "/Applications/Android Studio Preview.app/Contents/jre/jdk/Contents" .
    Source - flutter/flutter#76215 (comment)

Auth & User Settings

As a user I want to be able to:

  • Login using freeCodeCamp via OAuth 2.0
  • View my profile & progress on the web app.
  • Update my profile and user settings.
  • Delete my account.

forum: functionality, views and authentication

These are functionalities we must/could have that are currently present on the forum.

Steps:
Authentication:

  • authenticate a user so they can post messages etc.

Templates:

  • Make a template for making a new message on a post
  • Make a template for making a new topic on the forum
  • Make a template for viewing an author profile with badges, and other info.
  • Make a profile template.
  • #49
  • Make a settings template

Functionality:

Topics:

  • Figure out how to send a new message on a topic.
  • See in which category the topic was posted.
  • Scroll endlessly through topics of a specific category
  • Show new comment editor if no comment is present in a post provided the user is logged in

Author:

Settings:

  • Change profile picture.
  • Change email address.
  • Change name.
  • Send password reset email.

Activity:

  • view a list of your posted topics.

Permissions/ Staff:

  • Give moderator a badge next to their profile image.
  • delete, close, edit any posts.
  • View hidden topics.

Optimization:

Bugs

  • Emojis are loaded in the original size.
    • Screenshot Screen Shot 2021-10-29 at 13 13 58
  • The topic close message isn't shown.(This is known to be an issue with the flutter_svg package)
    • Screenshot Screen Shot 2021-10-29 at 13 53 17
  • Less number of characters warning is improperly positioned and text style buttons always puts cursor to beginning of text.
    • Screenshot Screen Shot 2021-10-29 at 13 50 17
...

F-Droid inclusion

Currently the app available on izzy-repo.

Would you consider putting this app on F-Droid, please?
Thankyou🙏🏿

Browse Topics from freeCodeCamp forum

As a user I want to be able to:

  • View a lightweight feed from the forum.
  • Search for topics on the forum.
  • Open topics in a browser window (web-view to OS default browser) - similar behavior to Twitter or Google news apps.

Preparation for initial release

  • Update app logo - #15
  • Bug: Allow playing of podcast episode until the app closes or another episode is played and fix audio loading bugs- #78
  • How do .env values work on release?
  • #81 - Final Podcast fixes(UI bug in smaller screens and fetch rss on per podcast basis)

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Pending Approval

These branches will be created by Renovate only once you click their checkbox below.

  • chore(deps): update dependency dependency_validator to v4
  • chore(deps): update dependency eslint to v9
  • chore(deps): update dependency flutter_lints to v3
  • fix(deps): update dependency device_info_plus to v10
  • fix(deps): update dependency flutter_custom_tabs to v2
  • fix(deps): update dependency flutter_inappwebview to v6
  • fix(deps): update dependency share_plus to v9
  • fix(deps): update dependency youtube_player_iframe to v5
  • 🔐 Create all pending approval PRs at once 🔐

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

Detected dependencies

bundler
mobile-app/android/Gemfile
  • fastlane undefined
cocoapods
mobile-app/ios/Podfile
docker-compose
mobile-api/docker-compose.dev.yml
  • mongo 7.0
mobile-api/docker-compose.yml
dockerfile
mobile-api/Dockerfile
  • node 20-alpine
  • node 20-alpine
  • node 20-alpine
github-actions
.github/workflows/api-build-and-test.yml
  • actions/checkout v4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • actions/setup-node v4@60edb5dd545a775178f52524783378180af0d1f8
.github/workflows/crowdin-download.yml
  • actions/checkout v4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • freecodecamp/crowdin-action main
  • crowdin/github-action master
  • crowdin/github-action master
  • freecodecamp/crowdin-action main
  • freecodecamp/crowdin-action main
  • ubuntu 22.04
.github/workflows/crowdin-upload.yml
  • actions/checkout v4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • freecodecamp/crowdin-action main
  • crowdin/github-action master
  • ubuntu 22.04
.github/workflows/deploy-api.yml
  • actions/checkout v4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • actions/setup-node v4@60edb5dd545a775178f52524783378180af0d1f8
  • digitalocean/action-doctl v2
  • ubuntu 22.04
.github/workflows/flutter-ci.yml
  • actions/checkout v4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • gradle/actions v3@db19848a5fa7950289d3668fb053140cf3028d43
  • actions/setup-java v4@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9
  • actions/cache v4@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
  • reactivecircus/android-emulator-runner v2@6b0df4b0efb23bb0ec63d881db79aefbc976e4b2
  • subosito/flutter-action v2@44ac965b96f18d999802d4b807e3256d5a3f9fa1
  • reactivecircus/android-emulator-runner v2@6b0df4b0efb23bb0ec63d881db79aefbc976e4b2
  • actions/upload-artifact v4@65462800fd760344b1a7b4382951275a0abb4808
.github/workflows/flutter-deploy.yml
  • actions/checkout v4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • gradle/actions v3@db19848a5fa7950289d3668fb053140cf3028d43
  • actions/setup-java v4@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9
  • actions/cache v4@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
  • reactivecircus/android-emulator-runner v2@6b0df4b0efb23bb0ec63d881db79aefbc976e4b2
  • subosito/flutter-action v2@44ac965b96f18d999802d4b807e3256d5a3f9fa1
  • reactivecircus/android-emulator-runner v2@6b0df4b0efb23bb0ec63d881db79aefbc976e4b2
  • actions/upload-artifact v4@65462800fd760344b1a7b4382951275a0abb4808
  • ruby/setup-ruby v1
.github/workflows/mobile-curriculum-e2e.yml
  • actions/checkout v4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • actions/checkout v4@0ad4b8fadaa221de15dcec353f45205ec38ea70b
  • pnpm/action-setup v2
  • actions/setup-node v4@60edb5dd545a775178f52524783378180af0d1f8
  • subosito/flutter-action v2@44ac965b96f18d999802d4b807e3256d5a3f9fa1
  • cypress-io/github-action v6
  • ubuntu 22.04
gradle
mobile-app/android/gradle.properties
mobile-app/android/settings.gradle
mobile-app/android/build.gradle
  • com.android.tools.build:gradle 7.4.2
  • com.google.gms:google-services 4.4.0
  • com.google.firebase:firebase-crashlytics-gradle 2.9.9
  • org.jetbrains.kotlin:kotlin-gradle-plugin 1.9.10
  • org.jetbrains.kotlin:kotlin-stdlib-jdk7 1.9.10
mobile-app/android/app/build.gradle
  • com.google.android.material:material 1.9.0
  • androidx.multidex:multidex 2.0.1
gradle-wrapper
mobile-app/android/gradle/wrapper/gradle-wrapper.properties
  • gradle 7.6.3
npm
mobile-api/package.json
  • node-fetch 3.3.2
  • bree 9.2.2
  • dotenv 16.4.5
  • express 4.19.2
  • mongoose 8.3.2
  • rss-parser 3.13.0
  • @babel/preset-typescript 7.24.1
  • @types/jest 29.5.12
  • @babel/preset-env 7.24.4
  • @babel/plugin-transform-typescript 7.24.4
  • @breejs/ts-worker 2.0.0
  • @types/express 4.17.21
  • @types/node 20.12.7
  • @typescript-eslint/eslint-plugin 7.7.1
  • @typescript-eslint/parser 7.7.1
  • eslint 8.57.0
  • eslint-config-prettier 9.1.0
  • nodemon 3.1.0
  • prettier 3.2.5
  • ts-jest 29.1.2
  • ts-node 10.9.2
  • typescript 5.4.5
  • node >=16
  • npm >=8
package.json
  • husky 9.0.11
  • lint-staged 15.2.2
  • npm-run-all2 6.1.2
  • shx 0.3.4
  • node >=16
  • npm >=8
pub
mobile-app/pubspec.yaml
  • flutter
  • flutter_dotenv ^5.1.0
  • flutter_html 3.0.0-beta.2
  • just_audio ^0.9.36
  • path_provider ^2.1.2
  • sqflite ^2.3.2
  • stacked ^3.4.2
  • stacked_services ^1.5.0
  • url_launcher ^6.2.5
  • sqflite_migration_service ^2.0.0-nullsafety.1
  • dio ^5.4.2+1
  • phone_ide ^1.2.3
  • jiffy ^6.2.1
  • shared_preferences ^2.2.2
  • html ^0.15.4
  • flutter_hooks ^0.20.5
  • flutter_local_notifications ^17.0.0
  • youtube_player_iframe ^4.0.4
  • infinite_scroll_pagination ^4.0.0
  • web_socket_channel ^2.4.0
  • cached_network_image ^3.3.1
  • flutter_secure_storage ^9.0.0
  • photo_view ^0.14.0
  • share_plus ^7.2.2
  • pretty_dio_logger ^1.2.0-beta-1
  • curl_logger_dio_interceptor ^1.0.0
  • flutter_heatmap_calendar ^1.0.4
  • intl ^0.18.1
  • path ^1.8.3
  • audio_service ^0.18.12
  • device_info_plus ^9.1.2
  • auth0_flutter <=1.4.1
  • upgrader ^10.2.0
  • quick_actions ^1.0.7
  • firebase_core ^2.27.0
  • firebase_analytics ^10.8.9
  • flutter_custom_tabs ^1.0.4
  • flutter_scroll_shadow ^1.2.4
  • firebase_crashlytics ^3.4.18
  • flutter_highlight ^0.7.0
  • flutter_inappwebview ^5.8.0
  • flutter_html_table ^3.0.0-beta.2
  • ua_client_hints ^1.2.2
  • algolia_helper_flutter ^1.0.0
  • build_runner ^2.1.2
  • integration_test
  • stacked_generator ^1.5.1
  • flutter_launcher_icons ^0.13.1
  • dependency_validator ^3.2.2
  • flutter_lints ^2.0.0
  • sqflite_common_ffi ^2.3.2+1
  • mockito ^5.3.2
  • dart >=3.0.0 <4.0.0

  • Check this box to trigger a request for Renovate to run again on this repository

Accessibility tips for the first/next release

  • - Active interactions. Ensure that all active interactions do something. Any button that can be pushed should do something when pushed. For example, if you have a no-op callback for an onPressed event, change it to show a SnackBar on the screen explaining which control you just pushed.

  • - Screen reader testing. The screen reader should be able to describe all controls on the page when you tap on them, and the descriptions should be intelligible. Test your app with TalkBack (Android) and VoiceOver (iOS).

  • - Contrast ratios. We encourage you to have a contrast ratio of at least 4.5:1 between controls or text and the background,

  • - with the exception of disabled components. Images should also be vetted for sufficient contrast.

  • - Context switching. Nothing should change the user’s context automatically while typing in information. Generally, the widgets should avoid changing the user’s context without some sort of confirmation action.

  • - Tappable targets. All tappable targets should be at least 48x48 pixels.

  • - Errors. Important actions should be able to be undone. In fields that show errors, suggest a correction if possible.

  • - Color vision deficiency testing. Controls should be usable and legible in colorblind and grayscale modes.

  • - Scale factors. The UI should remain legible and usable at very large scale factors for text size and display scaling.

[LEARN] features / UI updates V3.0

Design link- https://www.figma.com/file/4XPlUi8QGWsmyV7hA8r86m/learn-mobile

PhoneIDE

  • #570
  • Make highlighting more accessible by preventing line-breaking (Which would break the highlighting in the entire file) this will make everything more visible.
  • An option to select a certain type of language in the code editor which will enable highlighting for that programming language.
  • #569

Learn

Required before release

  • Gatekeep users if the app is not in latest version

Updated tasks

Challenge

Header

  • It should be possible to view a dropdown which shows all openable files in the current challenge, if there is not more than one file available there should be text instead displaying the file name.
  • It should have a preview which displays the current project

Instructions Pane - #481

  • When starting a new challenge, a pop-up should appear with the current instructions.
  • The instructions should close if the user presses a cross icon in the upper-right corner.
  • Under the title "Instructions" there should be a progress indicator which displays the number of steps completed and the total number of steps e.g., Step 45 out of 100.

Hint Pane

  • When a user fails to pass the tests, a pop-up should appear which shows a hint, and indicates what the user needs to do to pass the tests
  • The hint should close if the user presses a cross icon in the upper-right corner.
  • There should be a button the user can use to reset the challenge
  • There should be a button that the user can click to take them to the forum to get external help
  • There should be a button to preview the project the user is developing.
  • The instructions and hints should cover the same amount of the screen regardless of their content. If the content is larger than the element, it should be scrollable.

Pass Pane

  • The pass pane should show up a challenge is completed successfully
  • Inside the past pane there should be a motivational quote
  • The pass pane should have a progress bar that displays the amount completed percent in the current project
  • The progress bar should have a text-indicator which displays the number of percent completed
  • #688

Lower function bar

  • There should be a functional bar that includes multiple buttons to execute actions
  • There should be a button that hides and opens the instruction pane, when the pane is active the color of the button should change to indicate that the button is active.
  • There should be a button to test the challenges.
  • The test button should turn green when the challenge passes and indicates that the user can move to the next challenge.
  • There should be a button that hides the header which includes the preview and editor dropdown when the user is editing.
  • When the user is on the preview pane a button should appear that gives the user the ability to move back to the editor.

Superblock

  • When a superblock is not available yet there should be a snack-bar which indicates it.

Block pages

  • The user should have the ability to see their progress on the new RWD which has a grid-based challenge layout instead of a list layout (The list layout already has progress indication)
  • The block description should not be visible when the block is closed.

This includes minimal viable product and extra's, this may be discussed publicly. Please if I missed something you would like to see add a comment below.


Problems and features found/needed in development

This space will be updated with bugs or UI fixes which we come across while making this component

Features

  • When instructions/hint/success panel is open, text and line numbers are not aligned
  • Sign in button on pass panel when the user is not signed in
  • improve styling for the preview button so that it looks like a toggle button

Bugs and Flutter errors

  • WebView.destroy() called while WebView is still attached to window.
    • This appears when closing a challenge
    • Toggling back to editor from preview
  • For a challenge with single file, clicking the editor tab shouldn't refresh the challenge view nor should the user be asked to choose a file. Basically remove the dropdown for single file challenges.

Replace packages that do not support null safety

The current packages do not have support for null safety and should be replaced:

  • package:flutter_skeleton
  • package:flutter_swiper
  • package:flutter_page_indicator
  • package:transformer_page_view

Notch overlapping with menu header in freecodecamp flutter app

Describe the bug
My phones notch and the freecodecamp header in the flutter app are overlapping.

To Reproduce
Steps to reproduce the behavior:

  1. Go to freecodecamp flutter app(Android)
  2. Click on the navigation menu on the top left of the screen
  3. Click on learn
  4. You can see the bug popping on the notch

Expected behavior
Maybe It's not using enough padding to show it below my phone's notch leading fcc header and my notch to overlap.

Screenshots*
notch-bug

**Sma

rtphone (please complete the following information):**

  • Device: Oneplus7
  • OS: oxygen OS 11.0.3.1
  • Android: Freecodecamp flutter app

[learn] account settings for freeCodeCamp Account

To give the user (when logged-in) full control over their freeCodeCamp account we will need a settings page available.
these settings include:

  • Username field
  • Name field
  • Location field
  • Picture
  • About

Privacy

  • My profile - your certifications will be set to private if this is set to private
  • My name - if set to private the users name will not be displayed on their certification
  • My location - if set to private the users location will not be shown on their profile page.
  • My about - if set to private the users about will not be shown on their profile page.
  • My points - if set to private the users points will not be shown on their profile page.
  • My heatmap - if set to private the users heatmap will not be shown on their profile page
  • My certifications - certifications will be disabled if this is set to private

These are the settings (with some exceptions) there is no need to add the functionality of these buttons/fields right away. The most important thing right now will be adding the UI/UX.

Add Android Bottom Navigation Bar

In place of our mobile web UI buttons and our current top navbar, we want a more native-like bottom navigation bar with buttons to jump to different sections of freeCodeCamp (/learn, /forum, /news, /settings, /search).

  • Design a logical bottom navbar that is easy to navigate
  • Design a drawer that holds certain subjects such as news
  • When visiting one of the subjects in the drawer, the bottom navbar should change accordingly. For example, the news subject has the bottom navigation icons, Articles, Bookmarks, and Search.

News feed ideas

  • Pull to refresh in the articles page.
  • A progress bar could be shown when reading the article to know how much of the article is left to be read.
  • Visit an author profile

Unable to build project on Flutter 2.10

Describe the bug
Trying to build the project throws the following bug

Launching lib/main.dart on Nokia 5 4 in debug mode...
Warning: The plugin audio_service requires Android SDK version 31.
Warning: The plugin flutter_local_notifications requires Android SDK version 31.
Warning: The plugin flutter_plugin_android_lifecycle requires Android SDK version 31.
Warning: The plugin hexcolor requires Android SDK version 31.
Warning: The plugin image_picker requires Android SDK version 31.
Warning: The plugin integration_test requires Android SDK version 31.
Warning: The plugin path_provider_android requires Android SDK version 31.
Warning: The plugin shared_preferences_android requires Android SDK version 31.
Warning: The plugin url_launcher_android requires Android SDK version 31.
Warning: The plugin video_player_android requires Android SDK version 31.
Warning: The plugin webview_flutter_android requires Android SDK version 31.
One or more plugins require a higher Android SDK version.
Fix this issue by adding the following to /Users/user/mobile/mobile-app/android/app/build.gradle:
android {
  compileSdkVersion 31
  ...
}

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:checkDebugAarMetadata'.
> Multiple task action failures occurred:
   > A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
      > The minCompileSdk (31) specified in a
        dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
        is greater than this module's compileSdkVersion (android-30).
        Dependency: androidx.window:window-java:1.0.0-beta04.
        AAR metadata file: /Users/user/.gradle/caches/transforms-2/files-2.1/625039eaad011f884ddd84f857a44b7f/jetified-window-java-1.0.0-beta04/META-INF/com/android/build/gradle/aar-metadata.properties.
   > A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
      > The minCompileSdk (31) specified in a
        dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
        is greater than this module's compileSdkVersion (android-30).
        Dependency: androidx.window:window:1.0.0-beta04.
        AAR metadata file: /Users/user/.gradle/caches/transforms-2/files-2.1/a78fdf90e4c1f8464b19895cfb365f3f/jetified-window-1.0.0-beta04/META-INF/com/android/build/gradle/aar-metadata.properties.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 19s
Exception: Gradle task assembleDebug failed with exit code 1
Exited (sigterm)

Making the necessary change and building it again throws this issue

Launching lib/main.dart on Nokia 5 4 in debug mode...
Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://schemas.android.com/repository/android/common/01
Warning: Mapping new ns http://schemas.android.com/repository/android/generic/02 to old ns http://schemas.android.com/repository/android/generic/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/addon2/02 to old ns http://schemas.android.com/sdk/android/repo/addon2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/repository2/02 to old ns http://schemas.android.com/sdk/android/repo/repository2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/sys-img2/02 to old ns http://schemas.android.com/sdk/android/repo/sys-img2/01
Note: /Users/user/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/fk_user_agent-2.1.0/android/src/main/java/io/flutterfastkit/fk_user_agent/FkUserAgentPlugin.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
e: Incompatible classes were found in dependencies. Remove them from the classpath or use '-Xskip-metadata-version-check' to suppress errors
e: /Users/user/.gradle/caches/transforms-2/files-2.1/06445d7ee3d674db365da5b7e383aeec/jetified-window-1.0.0-beta04-api.jar!/META-INF/window_release.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.15.
e: /Users/user/.gradle/caches/transforms-2/files-2.1/185d46b6321985f52dcc07c04b9e0199/jetified-kotlin-stdlib-common-1.5.31.jar!/META-INF/kotlin-stdlib-common.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.15.
e: /Users/user/.gradle/caches/transforms-2/files-2.1/57fff25d753f492b2e9dfa8a7a25a127/jetified-kotlin-stdlib-jdk7-1.5.30.jar!/META-INF/kotlin-stdlib-jdk7.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.15.
e: /Users/user/.gradle/caches/transforms-2/files-2.1/7ed1fc227d449123990dfe95b91bbf13/jetified-kotlin-stdlib-1.5.31.jar!/META-INF/kotlin-stdlib.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.15.
e: /Users/user/.gradle/caches/transforms-2/files-2.1/989d7c521cad3a1e2e82ee6a7a836f54/jetified-kotlinx-coroutines-android-1.5.2.jar!/META-INF/kotlinx-coroutines-android.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.15.
e: /Users/user/.gradle/caches/transforms-2/files-2.1/9c675fcd73ec0913dfa5836b73d5959f/jetified-window-java-1.0.0-beta04-api.jar!/META-INF/window-java_release.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.15.
e: /Users/user/.gradle/caches/transforms-2/files-2.1/cdd51607f1d98bcc689bce197d763afe/jetified-kotlin-stdlib-jdk8-1.5.30.jar!/META-INF/kotlin-stdlib-jdk8.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.15.
e: /Users/user/.gradle/caches/transforms-2/files-2.1/ced2a85cd1d4e10ca7b42bb11579f9f7/jetified-kotlinx-coroutines-core-jvm-1.5.2.jar!/META-INF/kotlinx-coroutines-core.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.15.
e: /Users/user/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/hexcolor-2.0.6/android/src/main/kotlin/com/ggichure/github/hexcolor/HexcolorPlugin.kt: (20, 5): Class 'kotlin.Unit' was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.15.
The class is loaded from /Users/user/.gradle/caches/transforms-2/files-2.1/7ed1fc227d449123990dfe95b91bbf13/jetified-kotlin-stdlib-1.5.31.jar!/kotlin/Unit.class
e: /Users/user/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/hexcolor-2.0.6/android/src/main/kotlin/com/ggichure/github/hexcolor/HexcolorPlugin.kt: (21, 13): Class 'kotlin.Unit' was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.15.
The class is loaded from /Users/user/.gradle/caches/transforms-2/files-2.1/7ed1fc227d449123990dfe95b91bbf13/jetified-kotlin-stdlib-1.5.31.jar!/kotlin/Unit.class
e: /Users/user/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/hexcolor-2.0.6/android/src/main/kotlin/com/ggichure/github/hexcolor/HexcolorPlugin.kt: (25, 5): Class 'kotlin.Unit' was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.15.
The class is loaded from /Users/user/.gradle/caches/transforms-2/files-2.1/7ed1fc227d449123990dfe95b91bbf13/jetified-kotlin-stdlib-1.5.31.jar!/kotlin/Unit.class
e: /Users/user/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/hexcolor-2.0.6/android/src/main/kotlin/com/ggichure/github/hexcolor/HexcolorPlugin.kt: (26, 14): Class 'kotlin.Unit' was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.15.

The class is loaded from /Users/user/.gradle/caches/transforms-2/files-2.1/7ed1fc227d449123990dfe95b91bbf13/jetified-kotlin-stdlib-1.5.31.jar!/kotlin/Unit.class
e: /Users/user/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/hexcolor-2.0.6/android/src/main/kotlin/com/ggichure/github/hexcolor/HexcolorPlugin.kt: (28, 14): Class 'kotlin.Unit' was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.15.

The class is loaded from /Users/user/.gradle/caches/transforms-2/files-2.1/7ed1fc227d449123990dfe95b91bbf13/jetified-kotlin-stdlib-1.5.31.jar!/kotlin/Unit.class
e: /Users/user/Documents/flutter/.pub-cache/hosted/pub.dartlang.org/hexcolor-2.0.6/android/src/main/kotlin/com/ggichure/github/hexcolor/HexcolorPlugin.kt: (33, 13): Class 'kotlin.Unit' was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.15.
The class is loaded from /Users/user/.gradle/caches/transforms-2/files-2.1/7ed1fc227d449123990dfe95b91bbf13/jetified-kotlin-stdlib-1.5.31.jar!/kotlin/Unit.class

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':hexcolor:compileDebugKotlin'.
> Compilation error. See log for more details

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 28s
┌─ Flutter Fix ────────────────────────────────────────────────────────────────────────────────┐
│ [!] Your project requires a newer version of the Kotlin Gradle plugin.                       │
│ Find the latest version on https://kotlinlang.org/docs/gradle.html#plugin-and-versions, then │
│ update /Users/user/mobile/mobile-app/android/build.gradle:                                   │
│ ext.kotlin_version = '<latest-version>'                                                      │
└──────────────────────────────────────────────────────────────────────────────────────────────┘
Exception: Gradle task assembleDebug failed with exit code 1
Exited (sigterm)

Changing kotlin version to 1.6.10 fixes this issue

To Reproduce
Steps to reproduce the behavior:

  1. run flutter upgrade to upgrade it to 2.10.
  2. Run flutter build

Smartphone (please complete the following information):

  • Device: Nokia 5.4

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.