Get Started
Setup the atSDK for your preferred language
Starter Flutter App
Create a Flutter application initialized for use with the atSDK
If you don't have a Flutter setup for development yet, please see the Flutter docs.
1. Create a new Flutter app
First, generate a new Flutter app (replace at_app with the name of your application).
flutter create at_app
cd at_app2. Add dependencies
Then add the following dependencies to your project:
flutter pub add at_client_mobile at_onboarding_flutter flutter_dotenv path_provider3. Replace main.dart
Now copy the contents of main.dart from below into lib/main.dart into your project.
4. Add home_screen.dart
Create a second file in lib/ called home_screen.dart. Copy the contents of home_screen.dart from below into your project.
5a. gitignore the .env file
Add the following line to the top of .gitignore:
.envThis will prevent accidentally uploading the secret values stored in .env to any git repositories associated with your app.
5b. Add and populate the .env file
Create a new file in the root of the project (next to pubspec.yaml) called .env. Add the following lines to it:
NAMESPACE=
API_KEY=These values should be populated with your unique app namespace, and registrar API key.
5.c. Register the .env file in pubspec.yaml
In pubspec.yaml there should be a flutter: key, under this key, we want to create and add .env the assets: list:
...
flutter:
...
assets:
- .env
...
...6. Start developing!
Start your application with the following command:
flutter runNow you are ready to begin developing!
Get Started C Application
Setup a CMake project which includes the atSDK package suite.
The full example can be found here.
1. Ensure you have a C Compiler, CMake, and a build automation tool
The method at which you decide to use to install these prerequisites are up to you. These three tools can be installed using either apt or pip.
Firstly, ensure you have a C compiler such as clang or gcc. We recommend gcc because that is currently what Atsign is focused on supporting.
gcc --versionSecondly, ensure you have CMake installed using cmake --version. Ensure that your CMake version is >= 3.24. If you have issues obtaining a newer version of CMake, we have found lots of success using pip when installing CMake via pip install [email protected]
cmake --versionLastly, ensure you have a automation tool installed, such as GNU Make. We recommend GNU Make because that is currently what Atsign is focused on supporting. These examples are using GNU Make version 4.3, but any version should work.
make --version2. Create an empty directory
This command will create a directory and then go into it.
mkdir my_first_c_app && cd my_first_c_app3. Create CMakeLists.txt
Inside your project folder, create a new file called CMakeLists.txt.
Copy and paste the CMake code into the file. Feel free to change the project name by changing this line:project(my_first_c_app) .
# Minimum cmake version required by atSDK is 3.24
cmake_minimum_required(VERSION 3.24)
project(my_first_c_app)
include(FetchContent)
FetchContent_Declare(
atsdk
URL https://github.com/atsign-foundation/at_c/archive/refs/tags/v0.1.0.tar.gz
URL_HASH SHA256=7ca4215a473037ca07bef362b852291b0a1cf4e975d24d373d58ae9c1df832bc
)
FetchContent_MakeAvailable(atsdk)
add_executable(main ${CMAKE_CURRENT_LIST_DIR}/main.c)
target_link_libraries(main PRIVATE atclient)The above CMakeLists.txt will use FetchContent to download the C atSDK for you. Then, we will create a target named main for you and link our atclient library statically.
4. Create main.c
Inside your project folder, create a new file called main.c
Change the line #define ATSIGN "@jeremy_0" to the atSign that you have keys to. For example, if you own an atSign @alice and have its keys in the correct directory ~/.atsign/keys/@alice_key.atKeys, then I would change this line in my code to #define ATSIGN "@alice"
#include <atclient/atclient.h>
#include <atclient/atclient_utils.h>
#include <atclient/constants.h>
#include <atlogger/atlogger.h>
#include <stdlib.h>
#define ATSIGN "@jeremy_0"
int main()
{
int exit_code = -1;
atlogger_set_logging_level(ATLOGGER_LOGGING_LEVEL_DEBUG);
char *atserver_host = NULL;
int atserver_port = 0;
atclient_atkeys atkeys;
atclient_atkeys_init(&atkeys);
atclient atclient;
atclient_init(&atclient);
if ((exit_code = atclient_utils_find_atserver_address(ATCLIENT_ATDIRECTORY_PRODUCTION_HOST, ATCLIENT_ATDIRECTORY_PRODUCTION_PORT, ATSIGN, &atserver_host, &atserver_port)) != 0)
{
goto exit;
}
if ((exit_code = atclient_utils_populate_atkeys_from_homedir(&atkeys, ATSIGN)) != 0)
{
goto exit;
}
if ((exit_code = atclient_pkam_authenticate(&atclient, atserver_host, atserver_port, &atkeys, ATSIGN)) != 0)
{
goto exit;
}
atlogger_log("my_first_c_app", ATLOGGER_LOGGING_LEVEL_INFO, "Authenticated to atServer successfully!\n");
exit_code = 0;
exit:
{
free(atserver_host);
atclient_atkeys_free(&atkeys);
atclient_free(&atclient);
return exit_code;
}
}5. CMake Configure
In the terminal, run the following command.
cmake -S . -B buildThis is known as the "configure" step where CMake will build instructions on how to build the app specific to your machine.
Output should be similar to the following:
$ cmake -S . -B build
-- [ATSDK] ATSDK_AS_SUBPROJECT: ON
-- Building atlogger
-- [ATLOGGER] ATLOGGER_AS_SUBPROJECT: ON
-- Building atchops
-- [ATCHOPS] ATCHOPS_AS_SUBPROJECT: ON
-- [MbedTLS] fetching package...
-- [uuid4] fetching package...
-- Building atclient
-- [ATCLIENT] ATCLIENT_AS_SUBPROJECT: ON
-- [cjson] fetching package...
-- Configuring done
-- Generating done
-- Build files have been written to: /home/jeremy/GitHub/at_demos/demos/get_started_c/1-authentication/build6. Build
Use CMake to build your configure and build your programs:
cmake --build buildThis command is the same as running cd build && make all (if you are using Makefiles).
Your output will look similar to:
cmake --build build
[ 50%] Building C object CMakeFiles/main.dir/main.c.o
[100%] Linking C executable main
[100%] Built target main7. Run the binary
The previous command, if ran successfully, would have created a binary executable for you: ./build/main.
Simply run the program:
./build/mainYour output will look similar to:
[DEBG] 2024-08-15 00:37:16.517243 | connection | SENT: "jeremy_0"
[DEBG] 2024-08-15 00:37:16.550027 | connection | RECV: "3b419d7a-2fee-5080-9289-f0e1853abb47.swarm0002.atsign.zone:5770"
[DEBG] 2024-08-15 00:37:16.892252 | connection | SENT: "from:jeremy_0"
[DEBG] 2024-08-15 00:37:16.929632 | connection | RECV: "data:_d6d1a569-b944-4fd1-8c1e-7fc26e508452@jeremy_0:75be9182-bfdc-437f-96bc-c45eb5a1c0ff"
[DEBG] 2024-08-15 00:37:16.968986 | connection | SENT: "pkam:QLuCl8JITCbOF6J8A6WlqBX3FUKoRR8DHh0FMnbVhHYRiuXZdBHJks0aQtq2cUj47KdhJCvN3Uk728UJHzwLgIF00wE3893xUi+9luoD7OFdV4Pbtmrxvj4K/s81A4Z9XBEJwtKerWStUavX5hR39By6Y6NJ2HeCuqVvBw2WQ/gKM15cAndpXrYzEVNJk9eCCN4+VXWxJOm6FhoY41Qxn/QSYqnRqp6PfHiY1rFXjsikJX6ip3LrCFTabJAS78BHx4BmmUzGKVPn0dFtYwvEKBgumViQhKHwS1ae1xBkLTZCARdIUhdhudoyba/ogwIEMjTWanLzAbqtNRa6qPTDrw=="
[DEBG] 2024-08-15 00:37:17.018977 | connection | RECV: "data:success"
[INFO] 2024-08-15 00:37:17.019891 | my_first_c_app | Authenticated to atServer successfully!Congratulations! You have successfully ran a barebones Atsign C application.
Last updated

