Skip to content

Latest commit

 

History

History
181 lines (98 loc) · 5.59 KB

File metadata and controls

181 lines (98 loc) · 5.59 KB

Project Ideas

You might notice that the ideas listed are sometimes vague or incomplete. This is on purpose, as in real-world development, you often need to define the problem and scope your solution before coding officially begins. If you wish to submit a proposal based on these ideas, you are encouraged to contact the mentors on Discord and find out more about the particular suggestion you're looking at.

Desktop features

  1. Table (it's taken)

Add simple tabular content to a page

Expected Outcome:

  • The user can insert a table into a page via the slash '/' command
  • The user can delete and duplicate an existing table
  • The user can add/delete/duplicate/update rows and columns to an existing table
  • Each table cell supports rich-text editing
  • Test covered

Difficulty: Medium to High

Skills Required: Flutter

Mentor: Lucas

  1. ****Calendar Database (it's taken)

Calendars are a great way to visualize how things connect to certain dates from any database in AppFlowy. Use them for task management and event planning.

  • Expected Outcome: the user can create a calendar page and add an item to a certain date or a range of dates in the calendar.
  • Difficulty: High
  • Skills Required: Flutter
  • Mentor: Nathan.fooo

  1. Toggle List

Toggles can show and hide content inside.

Expected Outcome:

  • insert a toggle list via the slash '/' command
  • convert highlighted lines into a toggle list
  • add or move things inside a toggle
  • add a toggle inside a toggle
  • hide and show content inside a toggle
  • toggle headings

Difficulty: Medium to High

Skills Required: Flutter

Mentor: Lucas

  1. The block handle and '+'

When you hover over any line or contents, the handle appears in the left margin. Click it to see a menu of options: Delete, Duplicate (design spec will be provided). Click '+' next to it to trigger the slash '/' menu.

Difficulty: Medium

Skills Required: Flutter

Mentor: Lucas

  1. ****Themes (it's taken)

Control the accent color used for interactive elements such as links, handles, and text selection. The editor cursor can also choose to use the same accent color.

Other customizations:

  • Fonts
  • Font sizes, font weights
  • Font colors
  • Text background colors

Difficulty: Medium

Skills Required: Flutter

Mentor: Lucas

  1. Shortcuts (it's taken)

Add more shortcuts and enable users to customize hotkeys

Difficulty: Easy to Medium

Skills Required: Flutter

Mentor: Lucas

  1. AI writers

Utilize AI models to assist in writing. For example, create a summary of selected text areas or brainstorm ideas given a specific prompt.

Difficulty: Medium

Skills Required: Flutter

Mentor: Lucas

  1. AI designers

Utilize AI models to assist in designing a page. For example, generate an image from text or auto makeover a page layout to make it more visually appealing

Difficulty: Medium

Skills Required: Flutter

Mentor: Lucas


  1. Outline Plugins for AppFlowy Editor

By adding the outline plugins to the document, a list of anchor links to the headings within the document will be automatically generated.

Expected Outcome:

  • insert a outline via the slash '/' command
  • convert highlighted lines into a outline
  • the content of the outline will be generated automatically based on the document
  • click on the content of the outline will take users directly to the corresponding heading
  • different levels of headings are indented differently. For example, H1 will have no indentation, while H2 will be indented once, and so on.

Difficulty: Medium

Skills Required: Flutter

Mentor: Lucas

  1. More ideas to come!

CI tools

1. Report Binary Size

We consider binary size as an important metric, although it is easy to overlook. We would like to create some GitHub integrations that would automatically do a release build of a new PR and report the difference in binary size between that PR and the current main branch.

  • Expected Outcome: an easy-to-use tool to report binary size
  • Difficulty: Easy / Medium
  • Skills Required: Flutter, Rust, GitHub API
  • Mentor: Nathan.fooo

2. Speed up building the release package

It takes almost 20 minutes to build the AppFlowy release package. It would be nice if we can speed it up using GitHub cache or matrix.

  • Expected Outcome: the cost of the time of the PR’s GitHub actions should be reduced
  • Difficulty: Easy / Medium
  • Skills Required: Flutter, Rust, GitHub API
  • Mentor: Nathan.fooo

Tracing performance regressions

1. Tracing performance regressions

Performance could become a key differentiator for AppFlowy. We’d like to keep tracking it. To track it, we need to come up with a metric system. The system includes a set of metrics and a running process that collects results and persists them for analysis.

  • Expected Outcome:
    • A metric system that measures the performance of AppFlowy
    • A working tool that collects results and persists them for analysis
  • Difficulty: Medium / High
  • Skills Required: Rust
  • Mentor: Nathan.fooo