Getting Started
Guardian Ghost is setup as a monorepo.
Directory.github/
- …
Directory.vscode/
- …
Directorymono/
Directorydocs/
Directorystarlight/
- …
Directoryexamples/
Directorydefault-project/
- …
Directorynative/
- …
Guardian Ghost is going to target Web, iOS and Android. With MacOS and Windows being a possibility in the future. To minimise developement effort this is all done inside a monorepo. Right now (Jan 2024) it isn’t as integrated a monorepo as possible. This is due to React Native 0.73 not playing nicely with pnpm workspaces. However it looks like this will be fixed during 2024 and allow the structure of the monorepo to be simplified.
Developer Environment
Right now the project is only tested on MacOS, but should work as is on Linux and Windows. However the React Native project requries a Mac for iOS development. The Android side of the project should be fine on all platforms.
Prerequisites
Brew - MacOS Package manager.
pnpm - Web Package manager.
nvm - Node Version Manager.
Visual Studio Code - IDE. Other IDEs are fine, but this is what the project is setup for and if you are a VIM nerd you can probably work
out how to set everything up yourself.
Android Studio - Compiling Android project.
Xcode (plus command line tools) - Compiling iOS project.
React.
React Native (with Expo).
Solid.JS.
Astro.
Typescript.
setup
To use the correct version of Node run nvm use
inside the project. NVM picks up the correct version from the .nvmrc file in the root.
The following setup presumes you are using Git Worktree. If that is new to you check out this quick video.
First bare clone the repo git clone --bare [email protected]:NigelBreslaw/guardian-ghost.git
.
Then cd in cd guardian-ghost.git
and setup the origin git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
or git fetch won’t work as expected.
When pushing a new branch you will see ‘current branch has no upstream branch, blah blah blah’. As of git 2.37.0 and higher you can setup auto tracking and never have to deal with this again! git config --global push.autoSetupRemote true