https://github.com/nfoert/circles
Circles is an open source, decentralized social network that allows users to move and interact within physical spaces.
https://github.com/nfoert/circles
css django hacktoberfest html javascript open-source python social-network
Last synced: about 1 year ago
JSON representation
Circles is an open source, decentralized social network that allows users to move and interact within physical spaces.
- Host: GitHub
- URL: https://github.com/nfoert/circles
- Owner: nfoert
- License: gpl-3.0
- Created: 2023-08-20T14:48:17.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-03-14T18:04:37.000Z (over 2 years ago)
- Last Synced: 2024-03-14T19:39:05.895Z (over 2 years ago)
- Topics: css, django, hacktoberfest, html, javascript, open-source, python, social-network
- Language: JavaScript
- Homepage:
- Size: 3.49 MB
- Stars: 14
- Watchers: 4
- Forks: 7
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
The production server has now been shut down, I haven't worked on this project in a while and the scope of it is a lot larger than I was anticipating. If interest in this project comes back I will consider working on it again, but for now development is no longer continuing. Thank you to all the contributors who's helped develop this project.
Circles is an open source, decentralized social network where people can move within a physical space and interact with each other.
Every User's Account lives within a Server. These Users can create Circles within these Servers, and sub Circles within those. Any other User can move in and out of Public Circles. Users can send messages in the Circle they're in, or in the entire Server. Users can also create Conversations with specific Users.

# Why
I created Circles for a few reasons:
- I care a lot about open source and I feel that we need more options for FOSS social media
- Right now, people on social media just feel like users who post stuff. I want Circles to feel like an actual space where people can move and interact, and allow people to have their own ways of expressing themselves.
# What needs done
I'd love to work with other programmers, artists, designers, and even you. I'd love to see pepole collaborating and contributing to Circles. Here's a rough list of the things that needs done. This list will change and evolve as the project grows.
- What's the best way to make Circles decentralized?
There's more that I have planned, I need to figure out a good way to show my To-Do list :D
# Installation for Development
All the self-hosting infrastructure is not fully setup yet. These instructions are not final and will be adjusted as new features and infrastructure are set up. If you're having any problems with any of this please create an Issue.
This is a brief guide.
Clone this repo by running
```bash
git clone https://github.com/nfoert/circles
```
Navigate to it using and create a virtual enviroment
```bash
cd circles
python -m venv
```
Activate the venv using the command for your system and install the necessary packages
(for Windows):
```bash
source .//Scripts/activate
pip install -r requirements.txt
```
(for Mac OS):
```bash
source .//bin/activate
pip install -r requirements.txt
```
(for Linux):
```bash
source .//bin/activate
pip install -r requirements.txt
```
Next, make and migrate your migrations, then create a superuser.
Before doing this, delete the `migrations` folders from the `main` and `authentication` folders. Then run the following commands:
```bash
cd circles
python manage.py makemigrations main authentication
python manage.py migrate
python manage.py createsuperuser
```
**Note**: If you get an error when creating your superuser (`Superuser creation skipped due to not running in a TTY`) use this command instead:
```bash
winpty python manage.py createsuperuser
```
Now, run the server so you can do some initial setup
```bash
python manage.py runserver
```
Navigate to `http://127.0.0.1:8000/admin` in your browser. Log in using the credentials for your new super user and find the server info section. Configure the ip to be `http://127.0.0.1:8000` and the server name to be whatever you like. I recommend making the name what you're planning on your domain to be. Ensure you set the checkbox for Production to `False`.
Everything *should* be working. Locally at least.
If you're doing this on a production server you should either follow the steps as above again, or if you're wanting to customize your own server fork this repo and repeat the steps above with your own GitHub repo url.
**Note: Set the `DJANGO_SETTINGS_MODULE` enviroment variable to `circles.production_settings` on your production server.**
**Warning: The `SECRET_KEY` in `settings.py` is insecure! Ensure to change this and do any steps in `python manage.py check --deploy` when using this in production.**
Additional setup may be required on specific hosting providers to be able to find things like static or media files.
On my production server I also have to run `python manage.py collectstatic` to get updated static files to be served to the client correctly.
# Contributing
Check [CONTRIBUTING.md](CONTRIBUTING.md) for instructions on how to contribute to Circles.