Compare commits

...
17 Commits
Author SHA1 Message Date
appflowy f7d66a1e59 [flutter]: update version 2021-11-15 18:23:04 +08:00
appflowy 706f64c9dd [flutter]: build flowy sdk as static lib 2021-11-15 18:23:04 +08:00
appflowy d2a8f89668 [flutter]: release build with x86 2021-11-15 18:23:04 +08:00
appflowy b0a818b813 [flutter]: update build script 2021-11-15 18:23:04 +08:00
appflowy 259a61378d [flutter]: config window build script 2021-11-15 18:23:04 +08:00
appflowy 0e8ebe1e4d [flutter]: update build script 2021-11-15 18:23:04 +08:00
Annie 118219e5b3 Update formatting easier copy cds 2021-11-15 11:09:46 +08:00
AppFlowy.IO d160c35e29 Merge pull request #5 from LeonardoRosaa/main
Documentation: does make easier copies of some command lines codes
2021-11-15 10:41:53 +08:00
Leonardo Rosa 51a7cc9dee Update README.md 2021-11-14 14:46:19 -03:00
Annie b51b12ab7d Update ABOUT_APPFLOWY.md 2021-11-14 16:12:42 +08:00
Annie 95a5c06e30 Update roadmap.md 2021-11-14 13:39:04 +08:00
Annie 2e03e03c77 Update ABOUT_APPFLOWY.md 2021-11-14 13:37:56 +08:00
AppFlowy.IO b36de8b8c8 Update README.md 2021-11-13 23:23:04 +08:00
appflowy 6cdbb459fa [flutter]: update default page title 2021-11-13 14:51:06 +08:00
appflowy 7f11b01480 [flutter]: add licenses 2021-11-13 14:51:06 +08:00
appflowy b63a6e8abc [flutter]: update avatar config 2021-11-13 14:51:06 +08:00
AppFlowy.IO 4661e32053 Update README.md 2021-11-13 14:50:08 +08:00
25 changed files with 165 additions and 195 deletions

No files matched your search

+42 -42
View File
@@ -1,3 +1,5 @@
#https://github.com/sagiegurari/cargo-make
extend = [
{ path = "scripts/makefile/desktop.toml" },
{ path = "scripts/makefile/protobuf.toml" },
@@ -11,72 +13,70 @@ extend = [
CARGO_MAKE_EXTEND_WORKSPACE_MAKEFILE = true
CARGO_MAKE_CRATE_FS_NAME = "dart_ffi"
CARGO_MAKE_CRATE_NAME = "dart-ffi"
VERSION = "0.0.1"
FEATURES = "flutter,http_server"
VERSION = "0.0.2"
FEATURES = "flutter"
PRODUCT_NAME = "AppFlowy"
#CRATE_TYPE: https://doc.rust-lang.org/reference/linkage.html
CRATE_TYPE = "cdylib"
[env.development-mac]
DEV = true
PROD = false
TARGET_OS = "macos"
DESKTOP_TARGET = "x86_64-apple-darwin"
CRATE_TYPE = "cdylib"
RUST_COMPILE_TARGET = "x86_64-apple-darwin"
BUILD_FLAG = "debug"
FLUTTER_PLATFORM = "macos"
FLUTTER_OUTPUT_DIR = "Debug"
FEATURES = "flutter"
PRODUCT_EXT = "app"
[env.production-mac]
DEV = false
PROD = true
TARGET_OS = "macos"
DESKTOP_TARGET = "x86_64-apple-darwin"
CRATE_TYPE = "cdylib"
[env.production-desktop-mac-aarch64]
BUILD_FLAG = "release"
FLUTTER_PLATFORM = "macos"
TARGET_OS = "macos"
RUST_COMPILE_TARGET = "aarch64-apple-darwin"
FLUTTER_OUTPUT_DIR = "Release"
FEATURES = "flutter"
PRODUCT_EXT = "app"
[env.production-desktop-mac-x86]
BUILD_FLAG = "release"
TARGET_OS = "macos"
RUST_COMPILE_TARGET = "x86_64-apple-darwin"
FLUTTER_OUTPUT_DIR = "Release"
PRODUCT_EXT = "app"
CRATE_TYPE = "staticlib"
[env.production-desktop-windows-x86]
BUILD_FLAG = "release"
TARGET_OS = "windows"
RUST_COMPILE_TARGET = "x86_64-pc-windows-gnu"
FLUTTER_OUTPUT_DIR = "Release"
PRODUCT_EXT = "exe"
[tasks.echo_env]
script = [
'''
echo CRATE_TYPE: ${CRATE_TYPE}
echo BUILD_FLAG: ${BUILD_FLAG}
echo TARGET_OS: ${TARGET_OS}
echo RUST_COMPILE_TARGET: ${RUST_COMPILE_TARGET}
echo FEATURES: ${FEATURES}
echo PRODUCT_EXT: ${PRODUCT_EXT}
echo ${platforms}
'''
]
[env.production-ios]
DEV = false
PROD = true
BUILD_FLAG = "release"
TARGET_OS = "ios"
CRATE_TYPE = "staticlib"
BUILD_FLAG = "release"
FLUTTER_PLATFORM = "ios"
FLUTTER_OUTPUT_DIR = "Release"
PRODUCT_EXT = "ipa"
[env.production-android]
DEV = false
PROD = true
TARGET_OS = "android"
CRATE_TYPE = "cdylib"
BUILD_FLAG = "release"
FLUTTER_PLATFORM = "apk"
FLUTTER_OUTPUT_DIR = "Release"
PRODUCT_EXT = "apk"
[env.production-win]
DEV = false
PROD = true
TARGET_OS = "windows"
CRATE_TYPE = "cdylib"
BUILD_FLAG = "release"
FLUTTER_PLATFORM = "apk"
FLUTTER_OUTPUT_DIR = "Release"
PRODUCT_EXT = "exe"
[tasks.setup-crate-type]
private = true
script = [
"""
toml = readfile ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/${CARGO_MAKE_CRATE_NAME}/Cargo.toml
val = replace ${toml} "rlib" ${CRATE_TYPE}
val = replace ${toml} "dylib" ${CRATE_TYPE}
result = writefile ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/${CARGO_MAKE_CRATE_NAME}/Cargo.toml ${val}
assert ${result}
""",
@@ -88,7 +88,7 @@ private = true
script = [
"""
toml = readfile ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/${CARGO_MAKE_CRATE_NAME}/Cargo.toml
val = replace ${toml} ${CRATE_TYPE} "rlib"
val = replace ${toml} ${CRATE_TYPE} "dylib"
result = writefile ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/${CARGO_MAKE_CRATE_NAME}/Cargo.toml ${val}
assert ${result}
""",
+34 -13
View File
@@ -5,21 +5,30 @@
⭐️ The Open Source Notion Alternative ⭐️ <br>
</h1>
<p align="center">
<a href="https://discord.gg/9Q2xaN37tV"><img src="https://img.shields.io/badge/AppFlowy.IO-discord-orange"></a>
<a href="https://github.com/AppFlowy-IO/appflowy"><img src="https://img.shields.io/github/stars/AppFlowy-IO/appflowy.svg?style=flat&logo=github&colorB=deeppink&label=stars"></a>
<a href="https://github.com/AppFlowy-IO/appflowy"><img src="https://img.shields.io/github/forks/AppFlowy-IO/appflowy.svg"></a>
<a href="https://opensource.org/licenses/AGPL-3.0"><img src="https://img.shields.io/badge/license-APGL-purple.svg" alt="License: AGPL"></a>
</p>
<p align="center">
You are in charge of your data and customizations.
</p>
<div align="center">
![GitHub stars](https://img.shields.io/github/stars/{AppFlowy-IO}/{appflowy}.svg)
</div>
<p align="center">
<a href="http://www.appflowy.io"><b>Website</b></a> •
<a href="https://discord.gg/9Q2xaN37tV"><b>Discord</b></a> •
<a href="https://twitter.com/appflowy"><b>Twitter</b></a> •
</p>
<p align="center"><img src="https://github.com/AppFlowy-IO/appflowy/blob/main/doc/imgs/welcome.png" alt="The Open Source Notion Alternative." width="1000px" /></p>
@@ -42,17 +51,27 @@ How to build on MacOS, please follow these simple steps.
**Step 1:**
* git clone [https://github.com/AppFlowy-IO/appflowy.git](https://github.com/AppFlowy-IO/appflowy.git)
```shell
git clone https://github.com/AppFlowy-IO/appflowy.git
```
**Step 2:**
- `cd appflowy`
- `make install_rust`
- `make install_cargo_make`
- `cargo make install_targets`
```shell
cd appflowy
```
```shell
make install_rust
```
```shell
make install_cargo_make
```
```shell
cargo make install_targets
```
>
>
>
> 🚀 Skip install_rust or install_cargo_make if you already installed it.
> FYI, AppFlowy uses [https://github.com/sagiegurari/cargo-make](https://github.com/sagiegurari/cargo-make) to construct the build scripts
@@ -60,7 +79,9 @@ How to build on MacOS, please follow these simple steps.
Follow the instructions [here](https://flutter.dev/docs/get-started/install) to install Flutter. As AppFlowy uses the `dev` channel, you need to switch the channel. Just type:
* `flutter channel dev`
```shell
flutter channel dev
```
**Step 4:**
@@ -7,7 +7,6 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flowy_infra_ui/style_widget/text.dart';
//import 'package:flowy_infra_ui/style_widget/icon_button.dart';
import 'package:avatars/avatars.dart';
class MenuUser extends StatelessWidget {
final UserProfile user;
@@ -36,17 +35,22 @@ class MenuUser extends StatelessWidget {
}
Widget _renderAvatar(BuildContext context) {
return SizedBox(
width: 30,
height: 30,
return const SizedBox(
width: 25,
height: 25,
child: ClipRRect(
borderRadius: Corners.s5Border,
child: Avatar(
value: 'M',
shape: AvatarShape.circle(20),
placeholderColors: const [Color.fromRGBO(132, 39, 224, 1.0)],
),
),
borderRadius: Corners.s5Border,
child: CircleAvatar(
backgroundColor: Color.fromRGBO(132, 39, 224, 1.0),
child: Text(
'M',
style: TextStyle(
fontSize: 18,
fontWeight: FontWeight.w300,
color: Colors.white,
),
),
)),
);
}
@@ -10,7 +10,6 @@ import flowy_infra_ui
import flowy_sdk
import package_info_plus_macos
import path_provider_macos
import sqflite
import url_launcher_macos
import window_size
@@ -20,7 +19,6 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
FlowySdkPlugin.register(with: registry.registrar(forPlugin: "FlowySdkPlugin"))
FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
WindowSizePlugin.register(with: registry.registrar(forPlugin: "WindowSizePlugin"))
}
+1 -16
View File
@@ -6,16 +6,10 @@ PODS:
- flowy_sdk (0.0.1):
- FlutterMacOS
- FlutterMacOS (1.0.0)
- FMDB (2.7.5):
- FMDB/standard (= 2.7.5)
- FMDB/standard (2.7.5)
- package_info_plus_macos (0.0.1):
- FlutterMacOS
- path_provider_macos (0.0.1):
- FlutterMacOS
- sqflite (0.0.2):
- FlutterMacOS
- FMDB (>= 2.7.5)
- url_launcher_macos (0.0.1):
- FlutterMacOS
- window_size (0.0.2):
@@ -28,14 +22,9 @@ DEPENDENCIES:
- FlutterMacOS (from `Flutter/ephemeral`)
- package_info_plus_macos (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus_macos/macos`)
- path_provider_macos (from `Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos`)
- sqflite (from `Flutter/ephemeral/.symlinks/plugins/sqflite/macos`)
- url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`)
- window_size (from `Flutter/ephemeral/.symlinks/plugins/window_size/macos`)
SPEC REPOS:
trunk:
- FMDB
EXTERNAL SOURCES:
flowy_editor:
:path: Flutter/ephemeral/.symlinks/plugins/flowy_editor/macos
@@ -49,8 +38,6 @@ EXTERNAL SOURCES:
:path: Flutter/ephemeral/.symlinks/plugins/package_info_plus_macos/macos
path_provider_macos:
:path: Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos
sqflite:
:path: Flutter/ephemeral/.symlinks/plugins/sqflite/macos
url_launcher_macos:
:path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos
window_size:
@@ -59,12 +46,10 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
flowy_editor: 26060a984848e6afac1f6a4455511f4114119d8d
flowy_infra_ui: 9d5021b1610fe0476eb1191bf7cd41c4a4138d8f
flowy_sdk: c302ac0a22dea596db0df8073b9637b2bf2ff6fd
flowy_sdk: b7efddcc3af4ea87dc2f842c22dc37283bb9e169
FlutterMacOS: 57701585bf7de1b3fc2bb61f6378d73bbdea8424
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
package_info_plus_macos: f010621b07802a241d96d01876d6705f15e77c1c
path_provider_macos: 160cab0d5461f0c0e02995469a98f24bdb9a3f1f
sqflite: a5789cceda41d54d23f31d6de539d65bb14100ea
url_launcher_macos: 45af3d61de06997666568a7149c1be98b41c95d4
window_size: 339dafa0b27a95a62a843042038fa6c3c48de195
@@ -406,6 +406,7 @@
MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx;
STRIP_STYLE = "non-global";
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
};
@@ -488,6 +489,7 @@
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
STRIP_STYLE = "non-global";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
@@ -534,6 +536,7 @@
MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx;
STRIP_STYLE = "non-global";
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
};
+1
View File
@@ -0,0 +1 @@
TODO: Add your license here.
+1
View File
@@ -0,0 +1 @@
TODO: Add your license here.
@@ -0,0 +1 @@
TODO: Add your license here.
+1
View File
@@ -0,0 +1 @@
TODO: Add your license here.
+2 -1
View File
@@ -73,4 +73,5 @@ build/
!**/ios/**/default.pbxuser
!**/ios/**/default.perspectivev3
**/*.dylib
**/*.dylib
**/*.a
+1
View File
@@ -0,0 +1 @@
TODO: Add your license here.
@@ -20,5 +20,6 @@ A new flutter plugin project.
# Flutter.framework does not contain a i386 slice.
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' }
s.swift_version = '5.0'
s.vendored_libraries = "libdart_ffi.dylib"
s.static_framework = true
s.vendored_libraries = "libdart_ffi.a"
end
+16 -40
View File
@@ -12,15 +12,10 @@ final DynamicLibrary _dl = _open();
/// Reference to the Dynamic Library, it should be only used for low-level access
final DynamicLibrary dl = _dl;
DynamicLibrary _open() {
if (is_tester()) {
return DynamicLibrary.open(
'${Directory.systemTemp.path}/app_flowy/libdart_ffi.dylib');
} else {
if (Platform.isAndroid) return DynamicLibrary.open('libdart_ffi.so');
if (Platform.isMacOS) return DynamicLibrary.executable();
if (Platform.isIOS) return DynamicLibrary.executable();
throw UnsupportedError('This platform is not supported.');
}
if (Platform.isAndroid) return DynamicLibrary.open('libdart_ffi.so');
if (Platform.isMacOS) return DynamicLibrary.executable();
if (Platform.isIOS) return DynamicLibrary.executable();
throw UnsupportedError('This platform is not supported.');
}
/// C function `async_command`.
@@ -32,8 +27,7 @@ void async_command(
_invoke_async(port, input, len);
}
final _invoke_async_Dart _invoke_async =
_dl.lookupFunction<_invoke_async_C, _invoke_async_Dart>('async_command');
final _invoke_async_Dart _invoke_async = _dl.lookupFunction<_invoke_async_C, _invoke_async_Dart>('async_command');
typedef _invoke_async_C = Void Function(
Int64 port,
Pointer<Uint8> input,
@@ -53,8 +47,7 @@ Pointer<Uint8> sync_command(
return _invoke_sync(input, len);
}
final _invoke_sync_Dart _invoke_sync =
_dl.lookupFunction<_invoke_sync_C, _invoke_sync_Dart>('sync_command');
final _invoke_sync_Dart _invoke_sync = _dl.lookupFunction<_invoke_sync_C, _invoke_sync_Dart>('sync_command');
typedef _invoke_sync_C = Pointer<Uint8> Function(
Pointer<Uint8> input,
Uint64 len,
@@ -71,8 +64,7 @@ int init_sdk(
return _init_sdk(path);
}
final _init_sdk_Dart _init_sdk =
_dl.lookupFunction<_init_sdk_C, _init_sdk_Dart>('init_sdk');
final _init_sdk_Dart _init_sdk = _dl.lookupFunction<_init_sdk_C, _init_sdk_Dart>('init_sdk');
typedef _init_sdk_C = Int64 Function(
Pointer<ffi.Utf8> path,
);
@@ -80,29 +72,28 @@ typedef _init_sdk_Dart = int Function(
Pointer<ffi.Utf8> path,
);
/// C function `init_stream`.
int set_stream_port(int port) {
return _set_stream_port(port);
}
final _set_stream_port_Dart _set_stream_port =
_dl.lookupFunction<_set_stream_port_C, _set_stream_port_Dart>('set_stream_port');
_dl.lookupFunction<_set_stream_port_C, _set_stream_port_Dart>('set_stream_port');
typedef _set_stream_port_C = Int32 Function(
Int64 port,
);
Int64 port,
);
typedef _set_stream_port_Dart = int Function(
int port,
);
int port,
);
/// C function `link_me_please`.
void link_me_please() {
_link_me_please();
}
final _link_me_please_Dart _link_me_please = _dl
.lookupFunction<_link_me_please_C, _link_me_please_Dart>('link_me_please');
final _link_me_please_Dart _link_me_please =
_dl.lookupFunction<_link_me_please_C, _link_me_please_Dart>('link_me_please');
typedef _link_me_please_C = Void Function();
typedef _link_me_please_Dart = void Function();
@@ -113,26 +104,11 @@ void store_dart_post_cobject(
_store_dart_post_cobject(ptr);
}
final _store_dart_post_cobject_Dart _store_dart_post_cobject = _dl
.lookupFunction<_store_dart_post_cobject_C, _store_dart_post_cobject_Dart>(
'store_dart_post_cobject');
final _store_dart_post_cobject_Dart _store_dart_post_cobject =
_dl.lookupFunction<_store_dart_post_cobject_C, _store_dart_post_cobject_Dart>('store_dart_post_cobject');
typedef _store_dart_post_cobject_C = Void Function(
Pointer<NativeFunction<Int8 Function(Int64, Pointer<Dart_CObject>)>> ptr,
);
typedef _store_dart_post_cobject_Dart = void Function(
Pointer<NativeFunction<Int8 Function(Int64, Pointer<Dart_CObject>)>> ptr,
);
bool is_tester() {
if (Foundation.kDebugMode) {
// ignore: unnecessary_null_comparison
// if (Platform.executable.isEmpty) {
// return false;
// } else {
// return Platform.executable.contains("tester");
// }
return false;
} else {
return false;
}
}
@@ -14,11 +14,12 @@ A new flutter plugin project.
s.author = { 'Your Company' => 'email@example.com' }
s.source = { :path => '.' }
s.source_files = 'Classes/**/*'
s.public_header_files = 'Classes/**/*.h'
s.dependency 'FlutterMacOS'
s.platform = :osx, '10.11'
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' }
s.swift_version = '5.0'
# s.static_framework = true
s.vendored_libraries = "libdart_ffi.dylib"
s.static_framework = true
s.vendored_libraries = "libdart_ffi.a"
end
-42
View File
@@ -36,13 +36,6 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.8.2"
avatars:
dependency: "direct main"
description:
name: avatars
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.0"
bloc:
dependency: transitive
description:
@@ -328,13 +321,6 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "7.3.3"
flutter_cache_manager:
dependency: transitive
description:
name: flutter_cache_manager
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.3"
flutter_colorpicker:
dependency: "direct main"
description:
@@ -809,13 +795,6 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
rxdart:
dependency: transitive
description:
name: rxdart
url: "https://pub.dartlang.org"
source: hosted
version: "0.27.2"
shelf:
dependency: transitive
description:
@@ -863,20 +842,6 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.0"
sqflite:
dependency: transitive
description:
name: sqflite
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0+4"
sqflite_common:
dependency: transitive
description:
name: sqflite_common
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1+1"
stack_trace:
dependency: transitive
description:
@@ -919,13 +884,6 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.0+3"
synchronized:
dependency: transitive
description:
name: synchronized
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
term_glyph:
dependency: transitive
description:
-1
View File
@@ -64,7 +64,6 @@ dependencies:
flutter_colorpicker: ^0.6.0
package_info_plus: ^1.3.0
url_launcher: ^6.0.2
avatars: ^2.0.0
# file_picker: ^4.2.1
clipboard: ^0.1.3
+21 -4
View File
@@ -1,9 +1,26 @@
# About
AppFlowy is an open-source alternative to Notion and Airtable, a no-code platform for anyone to build apps that suit their needs well.
AppFlowy is an open-source Notion alternative.
You are in charge of your data and customizations.
Design and modify AppFlowy your way, with a single codebase written in Flutter and Rust supporting multiple platforms armed with long-term maintainability.
## Built for teams that need more control and flexibility
### 100% data control
* You can host AppFlowy wherever you want; no vendor lock-in.
### Unlimited customizations
* Design and modify AppFlowy your way with an open core codebase.
### One codebase supporting multiple platforms
* AppFlowy is built with Flutter and Rust. What does this mean? Faster development, better native experience, and more reliable performance.
And you have **100%** control of your data.
## Built for individuals who care about data security and mobile experience
### 100% control of your data
* Download and install AppFlowy on your local machine. You own and control your personal data.
### Extensively extensible
* For those with no coding experience, AppFlowy enables you to create apps that suit your needs. It's built on a community-driven toolbox, including templates, plugins, themes, and more.
### Truely native experience
* Faster, more stable with support for offline mode. It's also better integrated with different devices. Moreover, AppFlowy enables users to access features and possibilities not available on the web.
Most workplace SaaS tools are limited in terms of customizations and data control. We don't believe that one workplace SaaS solution can fit all companies or individuals not to mention that a glass ceiling on what's possible in the future. Our mission is to make it possible for anyone to create apps that suit their needs well. Therefore, we are dedicated to creating AppFlowy, a powerful no-code open-source solution. This would not only democratize the knowledge of making complex workplace SaaS tools but also enable people and businesses to make beautiful things on their own.
## Community for hackers | Community for creators | Community for builders
### Let’s democratize the knowledge and wheels of making complex workplace collaboration tools
* It takes tremendous resources and expertise to build a great collaborative productivity tool. Don’t reinvent the wheels, let’s create the best open-source building blocks as infra to power others.
### We collaboratively create apps that suit others’ needs by developing a versatile toolbox of plugins, templates, and more
* Join us to build a toolbox that empowers anyone to create their own system - play and tweak without a glass ceiling on what’s possible.
+1 -1
View File
@@ -1 +1 @@
[WIP]
https://trello.com/b/NCyXCXXh/appflowy-roadmap
+3
View File
@@ -2,4 +2,7 @@
#target-dir = "./bin"
[target.x86_64-apple-darwin]
rustflags=["-C", "link-arg=-mmacosx-version-min=10.11"]
[target.aarch64-apple-darwin]
rustflags=["-C", "link-arg=-mmacosx-version-min=10.11"]
+2 -5
View File
@@ -7,11 +7,8 @@ edition = "2018"
[lib]
name = "dart_ffi"
# this value will change depending on the target os
# for iOS it would be `rlib`
# for Macos it would be `rlib`
# for android it would be `c-dylib`
# default rlib
crate-type = ["rlib"]
# default dylib
crate-type = ["dylib"]
[dependencies]
+1
View File
@@ -7,6 +7,7 @@ edition = "2018"
[dependencies]
r2d2 = "0.8.9"
libsqlite3-sys = {version = "0.9.1", features = ["bundled"]}
diesel = {version = "1.4.7", features = ["sqlite"]}
diesel_derives = {version = "1.4.1", features = ["sqlite"]}
diesel_migrations = {version = "1.4.0", features = ["sqlite"]}
@@ -28,7 +28,7 @@ pub fn create_default_workspace(time: chrono::DateTime<Utc>) -> Workspace {
fn create_default_app(workspace_id: String, time: chrono::DateTime<Utc>) -> App {
let app_id = uuid::Uuid::new_v4();
let name = "Getting Started".to_string();
let name = "⭐️ Getting started".to_string();
let desc = "".to_string();
let views = RepeatedView {
+11 -11
View File
@@ -2,39 +2,39 @@
[tasks.flowy-sdk]
category = "Build"
condition = { profiles = [ "development-mac" ], channels = ["nightly"] }
condition = { channels = ["nightly"] }
dependencies = ["flowy-sdk-build"]
run_task = { name = ["copy-to-sys-tmpdir"] }
[tasks.flowy-sdk-build]
condition = { channels = ["nightly"] }
dependencies = ["echo_env"]
condition = { env_set = [ "BUILD_FLAG", "RUST_COMPILE_TARGET", "CRATE_TYPE", "TARGET_OS"] }
run_task = { name = ["setup-crate-type","sdk-build", "post-desktop", "restore-crate-type"] }
[tasks.sdk-build]
condition = { platforms = ["mac"] }
description = "Build desktop targets."
script = [
"""
cd rust-lib/
if [ ${PROD} == true ]
if [ ${BUILD_FLAG} == release ]
then
cargo build --${BUILD_FLAG} --package=dart-ffi --target ${DESKTOP_TARGET} --features=${FEATURES}
cargo build --${BUILD_FLAG} --package=dart-ffi --target ${RUST_COMPILE_TARGET} --features=${FEATURES}
else
cargo build --package=dart-ffi --target ${DESKTOP_TARGET} --features=${FEATURES}
cargo build --package=dart-ffi --target ${RUST_COMPILE_TARGET} --features=${FEATURES}
fi
cd ../
""",
]
script_runner = "@shell"
[tasks.post-desktop]
private = true
condition = { platforms = ["mac"] }
script = [
"""
echo "🚀 🚀 🚀 Flowy-SDK build success"
cp ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/target/x86_64-apple-darwin/${BUILD_FLAG}/lib${CARGO_MAKE_CRATE_FS_NAME}.dylib \
${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/app_flowy/packages/flowy_sdk/macos/lib${CARGO_MAKE_CRATE_FS_NAME}.dylib
cp ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/target/${RUST_COMPILE_TARGET}/${BUILD_FLAG}/lib${CARGO_MAKE_CRATE_FS_NAME}.a \
${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/app_flowy/packages/flowy_sdk/macos/lib${CARGO_MAKE_CRATE_FS_NAME}.a
""",
"""
cp ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/${CARGO_MAKE_CRATE_NAME}/binding.h \
@@ -45,13 +45,13 @@ script_runner = "@duckscript"
[tasks.copy-to-sys-tmpdir]
private = true
condition = { platforms = ["mac"] }
condition = { profiles = [ "development-mac" ], platforms = ["mac"] }
script = [
"""
# post the dylib target_path that use for flutter unit test
target_path = set ${TMPDIR}/appflowy_client/lib${CARGO_MAKE_CRATE_FS_NAME}.dylib
rm ${target_path}
cp ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/target/x86_64-apple-darwin/${BUILD_FLAG}/lib${CARGO_MAKE_CRATE_FS_NAME}.dylib ${target_path}
cp ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/target/${RUST_COMPILE_TARGET}/${BUILD_FLAG}/lib${CARGO_MAKE_CRATE_FS_NAME}.dylib ${target_path}
""",
]
script_runner = "@duckscript"
+2 -2
View File
@@ -10,7 +10,7 @@ script = [
cd app_flowy/
flutter clean
flutter pub get
flutter build ${FLUTTER_PLATFORM} --${BUILD_FLAG} --build-name=${VERSION}
flutter build ${TARGET_OS} --${BUILD_FLAG} --build-name=${VERSION}
""",
]
script_runner = "@shell"
@@ -28,7 +28,7 @@ script = [
product=${PRODUCT_NAME}.${PRODUCT_EXT}
cp -R ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/app_flowy/build/${FLUTTER_PLATFORM}/Build/Products/${FLUTTER_OUTPUT_DIR}/${product} \
cp -R ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/app_flowy/build/${TARGET_OS}/Build/Products/${FLUTTER_OUTPUT_DIR}/${product} \
${output_path}/${product}
""",
]