Compass
This repository provides the source code for Compass, a web application for people to form deep 1-on-1 relationships in a fully transparent and efficient way. And it just got released!
We can’t do this alone. Whatever your skills—coding, design, writing, moderation, marketing, or even small donations—you can make a real difference. Contribute in any way you can and help our community thrive!
Features
- Extremely detailed profiles for deep connections
- Radically transparent: user base fully searchable
- Free, ad-free, not for profit (supported by donations)
- Created, hosted, maintained, and moderated by volunteers
- Open source
- Democratically governed
A detailed description of the vision is available here.
To Do
- Authentication (user/password and Google Sign In)
- Set up PostgreSQL in Production with supabase
- Set up web hosting (vercel)
- Set up backend hosting (google cloud)
- Ask for detailed info upon registration (location, desired type of connection, prompt answers, gender, etc.)
- Set up page listing all the profiles
- Search through most profile variables
- Set up chat / direct messaging
- Set up domain name (https://compassmeet.com)
Secondary To Do
Any action item is open to anyone for collaboration, but the following ones are particularly easy to do for first-time contributors.
- Add profile features (intellectual interests, cause areas, personality type, conflict style, etc.)
- Add filters to search through remaining profile features (politics, religion, education level, etc.)
- Cover with tests (very important, just the test template and framework are ready)
- Make the app more user-friendly and appealing (UI/UX)
- Clean up terms and conditions (convert to Markdown)
- Clean up privacy notice (convert to Markdown)
- Clean up learn more page
- Add dark theme
Implementation
The web app is coded in Typescript using React as front-end. It includes:
- Supabase for the PostgreSQL database
- Google Cloud for hosting the backend API
- Firebase for authentication and media storage
- Vercel for hosting the front-end
Development
Below are all the steps to contribute. If you have any trouble or questions, please don't hesitate to open an issue or contact us on Discord! We're responsive and happy to help.
Installation
Clone the repo and navigating into it:
git clone git@github.com:CompassMeet/Compass.git
cd Compass
Install opentofu, docker, and yarn. Try running this on Linux or macOS for a faster install:
./setup.sh
If it doesn't work, you can install them manually (Google how to install opentofu, docker, and yarn for your OS).
Then, install the dependencies for this project:
yarn install
Environment Variables
We can't make the following information public, for security and privacy reasons:
- Database, otherwise anyone could access all the user data (including private messages)
- Firebase, otherwise anyone could remove users or modify the media files
- Email, analytics, and location services, otherwise anyone could use our paid plan
So, for your development, we will give you user-specific access when possible (e.g., Firebase) and for the rest you will need to set up cloned services (email, locations, etc.) and store your secrets as environment variables.
To do so, simply create an .env file as a copy of .env.example, open it, and fill in the variables according to the instructions in the file:
cp .env.example .env
Installing PostgreSQL
Run the following commands to set up your local development database. Run only the section that corresponds to your operating system.
On macOS:
brew install postgresql
brew services start postgresql
On Linux:
sudo apt update
sudo apt install postgresql postgresql-contrib
sudo systemctl start postgresql
On Windows, you can download PostgreSQL from the official website.
Database Initialization
Create a database named compass and set the password for the postgres user:
sudo -u postgres psql
ALTER USER postgres WITH PASSWORD 'password';
\q
Create the database
...
Note that your local database will be made of synthetic data, not real users. This is fine for development and testing.
Tests
Make sure the tests pass:
yarn test
TODO: fix tests
Running the Development Server
Start the development server:
yarn dev
Once the server is running, visit http://localhost:3000 to start using the app. You can sign up and visit the profiles; you should see 5 synthetic profiles.
Now you can start contributing by making changes and submitting pull requests!
See development.md for additional instructions, such as adding new profile features.
Acknowledgements
This project is built on top of manifold.love, an open-source dating platform licensed under the MIT License. We greatly appreciate their work and contributions to open-source, which have significantly aided in the development of some core features such as direct messaging, prompts, and email notifications. We invite the community to explore and contribute to other open-source projects like manifold.love as well, especially if you're interested in functionalities that deviate from Compass' ideals of deep, intentional connections.