|
1 | | -# Blankspace |
| 1 | +# nounspace |
2 | 2 |
|
3 | | -**A platform where communities build their home on Farcaster.** |
| 3 | +**Highly customizable [Farcaster](https://farcaster.xyz/) client, initially funded by a grant from [Nouns DAO](https://nouns.wtf/).** Customize the look, sound, content, and functionality of your public profile space and personal feed/homebase with **Themes**, **Tabs**, and a growing library of mini-apps called **Fidgets**. |
4 | 4 |
|
5 | | -Blankspace gives token communities, DAOs, and Farcaster channels a customizable homebase with community tools (fidgets) for governance, token management, feeds, and more. Each community gets their own branded experience with custom themes, navigation, and pages. |
6 | 5 |
|
7 | | -Initially funded by a grant from [Nouns DAO](https://nouns.wtf/). Forked from [herocast](https://github.com/hellno/herocast/) in April 2024. |
| 6 | +Forked from [herocast](https://github.com/hellno/herocast/) in April 2024. |
8 | 7 |
|
9 | | -## Docs |
10 | | - |
11 | | -📚 **[View Full Documentation](https://blankdotspace.github.io/space-system/docs/)** |
12 | | - |
13 | | -Quick links: |
14 | | -- [Getting Started](docs/GETTING_STARTED.md) - Local development setup |
15 | | -- [Architecture](docs/ARCHITECTURE/OVERVIEW.md) - System design |
16 | | -- [Contributing](docs/CONTRIBUTING.md) - How to contribute |
17 | | - |
18 | | -> Documentation source: [`docs/`](docs/) • Docusaurus site: [`docs-site/`](docs-site/) |
| 8 | +# Docs |
| 9 | +https://docs.nounspace.com/nounspace-alpha/ |
19 | 10 |
|
20 | 11 | ## What is Farcaster? |
21 | | - |
22 | | -A protocol for decentralized social apps: https://www.farcaster.xyz |
| 12 | +a protocol for decentralized social apps: https://www.farcaster.xyz |
23 | 13 |
|
24 | 14 | ## 🏗️ Dev Setup |
25 | 15 |
|
26 | 16 | 1. **Clone the repo** |
27 | 17 | ```bash |
28 | | - git clone https://github.com/blankdotspace/space-system.git |
29 | | - cd space-system |
30 | | - ``` |
31 | | - |
| 18 | + git clone https://github.com/Nounspace/nounspace.ts.git |
| 19 | + cd nounspace.ts |
32 | 20 | 2. **Install Supabase CLI** |
33 | | - |
34 | | - On macOS: |
| 21 | + On Mac OS, for example: |
35 | 22 | ```bash |
36 | 23 | brew install supabase/tap/supabase |
| 24 | + ``` |
| 25 | + |
| 26 | + Install Docker Desktop on macOS: |
| 27 | + ```bash |
37 | 28 | brew install --cask docker |
38 | 29 | open /Applications/Docker.app |
39 | 30 | ``` |
40 | 31 | Wait for Docker Desktop to finish initializing before continuing. |
41 | 32 |
|
42 | | - On Linux (Debian/Ubuntu): |
| 33 | + On Linux: |
| 34 | + |
| 35 | + First, install Homebrew (if not already installed): |
43 | 36 | ```bash |
44 | | - # Install Homebrew if needed |
45 | 37 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" |
| 38 | + ``` |
| 39 | + Follow the instructions in your terminal to add Homebrew to your PATH. |
| 40 | + Generally, you'll need to run these commands (replace `.bashrc` with your shell configuration file if different): |
| 41 | +
|
| 42 | + ```bash |
| 43 | + (echo; echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"') >> ~/.bashrc |
| 44 | + eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" |
| 45 | + ``` |
46 | 46 | |
47 | | - # Install Supabase |
| 47 | + You may also need to install some dependencies first (Debian/Ubuntu): |
| 48 | + ```bash |
| 49 | + sudo apt-get install build-essential procps curl file git |
| 50 | + ``` |
| 51 | +
|
| 52 | + Then install Supabase: |
| 53 | + ```bash |
48 | 54 | brew install supabase/tap/supabase |
49 | | - |
50 | | - # Install Docker |
| 55 | + ``` |
| 56 | +
|
| 57 | + Install Docker (Debian/Ubuntu): |
| 58 | + ```bash |
51 | 59 | sudo apt-get update |
52 | 60 | sudo apt-get install -y docker.io docker-compose-plugin |
53 | 61 | sudo systemctl enable --now docker |
54 | 62 | sudo usermod -aG docker "$USER" |
55 | 63 | ``` |
56 | | - Log out/in for Docker group membership to take effect. |
| 64 | + Log out/in (or restart your shell) so the new group membership takes effect. |
| 65 | + For other distros, follow the [official Docker Engine docs](https://docs.docker.com/engine/install/). |
57 | 66 |
|
58 | | -3. **Install dependencies** |
| 67 | + Make sure Docker is installed and running before continuing. |
| 68 | +4. Install dependencies |
59 | 69 | ```bash |
60 | 70 | yarn install |
61 | | - ``` |
62 | | - |
63 | | -4. **Set up environment variables** |
64 | | - |
65 | | - Create `.env.development.local` with: |
66 | | - - `NEYNAR_API_KEY` - [Neynar API](https://docs.neynar.com/docs) |
67 | | - - `NEXT_PUBLIC_ALCHEMY_API_KEY` - [Alchemy](https://www.alchemy.com) |
68 | | - - `ETHERSCAN_API_KEY` - [Etherscan](https://docs.etherscan.io/getting-started/) |
69 | | - - `COINGECKO_API_KEY` - [CoinGecko](https://www.coingecko.com/en/api) |
70 | | - - `CLANKER_API_KEY` - Request from the Blankspace or Clanker team |
71 | | - - `YOUTUBE_API_KEY` - [YouTube API](https://developers.google.com/youtube/v3) |
72 | | - - `NEXT_PUBLIC_APP_FID` + `APP_MNEMONIC` - Your Farcaster account |
73 | | - - Supabase keys (from step 5) |
74 | | - |
75 | | -5. **Start Supabase and run migrations** |
| 71 | +6. Create a file `.env.development.local` |
| 72 | +7. Get the environment variables you need for the file <br> |
| 73 | + a. get a Neynar API key https://docs.neynar.com/docs -> `NEYNAR_API_KEY` <br> |
| 74 | + b. get an Alchemy API key https://www.alchemy.com -> `NEXT_PUBLIC_ALCHEMY_API_KEY` <br> |
| 75 | + c. get an Etherscan API key https://docs.etherscan.io/getting-started/ -> 'ETHERSCAN_API_KEY' <br> |
| 76 | + d. get a CoinGecko API key https://www.coingecko.com/en/api -> 'COINGECKO_API_KEY' <br> |
| 77 | + e. get a Clanker API key https://github.com/clanker-devco/DOCS -> 'CLANKER_API_KEY' (dev portal coming soon; request a key from the nounspace or Clanker team for now) <br> |
| 78 | + f. get a Youtube API key https://developers.google.com/youtube/v3 -> 'YOUTUBE_API_KEY' <br> |
| 79 | + g. get your Farcaster account FID and mnemonic -> `NEXT_PUBLIC_APP_FID` + `APP_MNEMONIC`<br> |
| 80 | + h. launch local copy of Supabase with `supabase start` (in the root directory of this repo), use the info provided -> <br> |
| 81 | +`API URL`:`NEXT_PUBLIC_SUPABASE_URL` + `anon key`:`NEXT_PUBLIC_SUPABASE_ANON_KEY` |
| 82 | +
|
| 83 | +8. Run the setup script |
| 84 | +```bash |
| 85 | +./setup.sh |
| 86 | +``` |
| 87 | +The script will attempt to start Supabase automatically if Docker is running; otherwise it will skip this step. |
| 88 | +
|
| 89 | +9. **Seed the local database** |
| 90 | + After Supabase is running and migrations are applied, seed the database: |
76 | 91 | ```bash |
77 | | - supabase start |
| 92 | + # Run migrations and seed SQL (if not already done) |
78 | 93 | supabase db reset |
79 | | - ``` |
80 | | - Use the `API URL` for `NEXT_PUBLIC_SUPABASE_URL` and `anon key` for `NEXT_PUBLIC_SUPABASE_ANON_KEY`. |
81 | | - |
82 | | -6. **Seed the local database** |
83 | | - ```bash |
| 94 | + |
| 95 | + # Seed community configs and navPage spaces |
84 | 96 | yarn seed |
85 | 97 | ``` |
86 | 98 | |
87 | | - This creates storage buckets, community configs, domain mappings, and NavPage registrations. |
88 | | - |
89 | | - Verify seeding worked: |
90 | | - ```bash |
91 | | - yarn seed --check |
92 | | - ``` |
| 99 | + This will: |
| 100 | + - Upload Nouns assets to ImgBB (if `NEXT_PUBLIC_IMGBB_API_KEY` is set) |
| 101 | + - Create navPage space registrations |
| 102 | + - Seed community configs (nouns, example, clanker) |
| 103 | + - Upload navPage space configs to Supabase Storage |
93 | 104 |
|
94 | | -7. **Run the test suite** |
| 105 | +10. Run the test suite |
95 | 106 | ```bash |
96 | 107 | yarn test |
97 | 108 | ``` |
98 | 109 |
|
99 | | -8. **Build and run** |
100 | | - ```bash |
101 | | - cp .env.development.local .env.local |
102 | | - yarn build |
103 | | - yarn dev |
104 | | - ``` |
| 110 | +11. cp .env.development.local .env.local |
| 111 | +12. yarn build |
| 112 | +
|
| 113 | +## Contributing and making Fidgets |
| 114 | +
|
| 115 | +See the [contributing docs](docs/CONTRIBUTING.MD) for how to add to the code base. Register on [Scout Game](https://scoutgame.xyz/) to earn points for contributions to repos in the [nounspace org](https://github.com/Nounspace/). |
| 116 | +
|
| 117 | +## Code Design |
| 118 | +
|
| 119 | +The Nounspace App follows the Atomic Design Pattern |
| 120 | + |
| 121 | +
|
| 122 | +`src/pages` holds the Page elements of the atomic design. These are separated from `src/common` due to how Next.js handles routing. |
| 123 | +
|
| 124 | +`src/common/ui` contains all of the display components for all other layers of the atomic design. `src/common/ui/components` are a mixture of Molecules and Organisms that were imported from `herocast`, they still need to be split into their appropriate folders (`src/common/ui/molecules` & `src/common/ui/organisms`). |
| 125 | +
|
| 126 | +`src/common/data` contains access to datastreams, in the form of database connections and API's |
| 127 | + |
| 128 | +`src/common/lib` contains useful functions for accessing formatted data, along with helpers functions inside the `utils` directory. |
| 129 | + |
| 130 | +`src/styles` contains information for managing website styling |
105 | 131 |
|
106 | | -## Contributing |
| 132 | +`src/constants` contains all static information that is needed to run the app. This includes actual constants, along with some global types |
107 | 133 |
|
108 | | -See the [contributing docs](docs/CONTRIBUTING.md) for how to add to the codebase. Register on [Scout Game](https://scoutgame.xyz/) to earn points for contributions to repos in the [blankdotspace org](https://github.com/blankdotspace/). |
| 134 | +### Refactoring |
109 | 135 |
|
110 | | -## License |
| 136 | +This file structure is adapted from `herocast`, and not all files have been cleaned up properly. If you find files or data that are placed in the wrong location, please refactor them to correct file or folder. For example, there are some constants that are not placed in the `src/constants` directory, and instead are in the other files. |
111 | 137 |
|
112 | | -Blankspace is released under the GPL-3.0 License. Feel free to fork and modify—just be sure any version you release uses the GPL-3.0 License too. |
| 138 | +### DB scheme: accounts |
| 139 | +reminder: key is an edcsa key not a 'normal' EVM address |
113 | 140 |
|
114 | | -**Made with ❤️ by the Blankspace team & community.** |
| 141 | +### License |
| 142 | +nounspace is released under the GPL-3.0 License. Feel free to fork and modify the project—just be sure any version you release uses the GPL-3.0 License too. |
115 | 143 |
|
116 | | -Questions or feedback? Create a [GitHub issue](https://github.com/blankdotspace/space-system/issues) or contact us in [Discord](https://discord.gg/eYQeXU2WuH) |
| 144 | +**Made with ❤️ by the Nounspace team & community.** |
| 145 | +Questions or feedback? Create a [Github issue](https://github.com/Nounspace/nounspace.ts/issues) or contact us in [Discord](https://discord.gg/eYQeXU2WuH) |
0 commit comments