Code Monkey home page Code Monkey logo

circles's Introduction

Header



class nfoert:
    def __init__(self):
        self.name = "nfoert"
        self.languages = ["Python", "HTML", "CSS", "JavaScript", "C++"]
        self.portfolio = "https://nfoert.github.io"

        self.projects = {
            "Cardie": "github.com/nfoert/cardie",
            "Circles": "github.com/nfoert/circles",
            "Jade Software": "github.com/nfoert/jadelauncher",
            "And more...": "github.com/nfoert"
        }

        self.links = {
            "YouTube": "youtube.com/@nfoert",
            "Twitch": "twitch.tv/nfoert",
            "Discord": "nfoert"
        }
    
    def hello(name):
        print(f"Hello, {name}. I'm nfoert!")
  

Hello there! ๐Ÿ‘‹

I'm nfoert, a programmer from USA. I care a lot about open source software, self hosting, and right to repair. I enjoy tinkering and experimenting with different aspects of technology, and I'm learning to create applications that have a helpful and functional use to the open source community.

I do a lot of work with web development and Django, I know Python, JavaScript, and C++, and I'd like to learn some more other lower level languages like Rust.

I've also experimented with Unreal Engine 5, created a macro pad with a Raspberry Pi Pico, I self host a personal Minecraft server, photo storage solution, Home Assistant, and I do other fun tinkery things.





An image of @nfoert's Holopin badges, which is a link to view their full Holopin profile

nfoert's GitHub stats GitHub Streak Top Langs


circles's People

Contributors

charann29 avatar jonascarvalh avatar nfoert avatar sidling1 avatar sree-hari-s avatar vanshajgupta37 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

circles's Issues

User can be logged in multiple times at once

Describe your new feature:
Currently, the user can be logged in from multiple tabs or devices at once. Instead, their session should be disconnected from the previous location and stay running on the new session.

Delete Account

Describe your new feature:
There's already a button for this in the Edit Profile menu:
image

This should then ask the user for confirmation, and then as a third step they need to enter their password.

Additional information:
Adding a fun animation to this would be interesting too. Maybe pressing this button takes the user to a new view which asks for confirmation and authentication before the screen slowly fades away and brings you back to the home screen.

Admin mode

Describe your new feature:
There's already an option to specify admins for the server in the Server model. This allows certain users to bypass the WebSocket connection restriction. If the user is an admin, this should allow them to access a new mode in the client that allows them to manage reports, ban users, suspend them and other administrative tasks.

  • Admin mode
    • Ban & Suspend
    • See public messages from a user
    • See stats from a user
    • See all Circles
    • See messages and users in those Circles

Additional information:
Private messages can't be seen, to protect the privacy of users.
Multiple levels of this mode:

  • Administrator: Can do anything
  • Moderator: Suspend users, delete messages

Email System

Describe your new feature:
The ability to send emails to the user when they create an account, sign in security warnings and verification codes.

Additional information:
I've used Courier before for this. If there's a better service for this that people like, I'd appreciate the suggestions.

Change Password

Describe your new feature:
There's already a button for this in the Edit Profile menu
image

This should bring up a menu for you to enter your old password, new password and a verification code sent to your email. (Will need an email system, check #28)

Loader gif

Having a loader icon while the main page is loading and during other network-based operations it would be nice to have some sort of custom spinner.

Here are the few ideas I like, feel free to come up with your own too

  • Normal notched circle spinner, but cycles through the Circles color as it spins
  • Animated version of the Circles logo where each individual Circle spins or moves in some way

I don't know a good way to create something like this, maybe someone has experience in animation?

Three.js canvas does not resize properly

When the window is resized or the console is opened the elements in the canvas are squashed instead of resized. There is already code adressing this but it does not seem to working as expected.

In main.js:

window.addEventListener('resize', onWindowResize, false);

function onWindowResize() {
    camera.aspect = window.innerWidth / window.innerHeight;
    camera.aspect = window.innerWidth / window.innerHeight;
    camera.updateProjectionMatrix();
    
    renderer.setSize(window.innerWidth, window.innerHeight);

    renderer.render(scene, camera);

}

Icons in conversation list are offset downwards

I don't know exactly why this is happening, but the icons are slightly taller than the text and causes a few pixels of extra space at the top.

This could be due to how the font is designed.

conversation_icon

Spam clicking location link in the navigation box causes strange behavior

Describe the bug
Circles keep popping in and out, and some "phantom" copies of the circles appear

To Reproduce
Spam click a link in the navigation box

Expected behavior
Nothing should have happened until the loading of the new location is completed

Screenshots
image
image

Error messages:

Uncaught TypeError: Cannot read properties of undefined (reading 'x')
    at Tween._onUpdateCallback (main.js:144:66)
    at Tween.update (tween.umd.js:717:22)
    at Group.update (tween.umd.js:269:40)

Error when getting a user's conversations

Describe the bug
AttributeError when getting the User's conversations.

To Reproduce
Create a new development server and log in. You'll get an AttributeError

Expected behavior
Conversations should have been fetched as expected.

Error Message

  File "/home/nfoert/circles/circles/main/consumers.py", line 494, in get_current_conversation
    "name": me.current_conversation.name,
AttributeError: 'NoneType' object has no attribute 'name'

Creating a User in the admin interface causes the password to not be hashed

Describe the bug
Creating a User in the admin interface will create the password in plain text. You'll not be able to sign in since the server is expecting a hashed password.

To Reproduce
Create an account in the admin interface. The password is stored as plain text.

Expected behavior
The password should be hashed on save and stored correctly.

Thanks @sree-hari-s for reminding me of this in #24.

[Bug] Overlapping Content

Describe the bug
image

To Reproduce
After successful registration, when server rules are showing up close that and press login.

Expected behavior
Either we should be logged into circles
Or Login page should show up normally

Alternate solution
hide the close button while showing the server rules or reduce the countdown timer.

Timestamps are broken in messages

Describe the bug
When switching conversations, timestamps go back to "Just Now"
When reloading the page however, the timestamps return to what they should be

To Reproduce
Send a message, wait a few minutes, then switch conversations.

Expected behavior
Timestamps should show the time they were actually sent, not "Just Now"

More information
Additionally, timestamps only show the time, not the date if it's older than a day. This needs to be fixed as well.

Pronouns field for Users

Describe your new feature:
Users should get a pronoun field that is displayed on their profile, and is editable in the profile details menu.

Include concept art:
I mocked up some ideas. I think I like number 3 the best. Which one does everyone prefer?
pronouns

Additional information:
This should be a CharField so users can put whatever pronouns they might like.

Touch Events

Describe your new feature:
Being able to handle touch events on mobile for:

  • Tap (Click)
  • Pinch (Zoom)
  • Drag (Pan)

Additional information:
Some basic functions have been added to main.js. See the Interaction Events > Touch and Touch Event Functions separators in the source code.

Server logging system

Describe your new feature:
The client recently got a simple logging system (#36), the server needs one as well.
You have to account for how a production server might handle logs, you may not be able to write to a file in all instances.

Chat Enhancements

The base messaging system is pretty much done, so I think we're ready to potentially add new features to it.

There's lots of ideas I have for this, these are reflected as tasks below.

  • @mentions are highlighted
  • Sending a link will turn it into a clickable <a> tag (or a custom button). This should also account for possible other text in the message, (eg. Look at my project: https://github.com/nfoert/circles)
  • Timestamps update automatically
  • Right click menu
    • Edit messages
    • Delete messages
    • Report messages
    • React to messages
  • Collapse longer messages
  • Typing indicator for current conversation
  • Message list status - global (appears in search results) or local (doesn't leave the Circle or conversation it was in)
  • Auto complete tone tags
  • Emoji selector

Would be a good idea to add a right click context menu as well. You could also use this menu for other things, like looking at the profile of the user who sent this message.

Messages appear to occasionally get added in backwards order

Describe the bug
Sometimes, (Maybe when switching conversations?) Messages get re-added in backwards order.

To Reproduce
More information needed

Expected behavior
Messages should be added in the correct order

More information
Thanks to a friend for pointing this out!

Showing a notification when one is already open doesn't reset the timer

Describe the bug
A notification is shown. Another one is shown while the previous one is still visible. The text changes as expected, but the notification still closes after 5 seconds from the previous notification, not the new one.

To Reproduce
Use show_notification twice, in quick succession. The second notification will close after the 5 second timer from the first one.

Expected behavior
If a second notification is called when one is already open it should hide the old one, reset the timer for closing the old one, and then show it again with a new 5 second timer.

[BUG] Log out button missing?

Describe the bug
To Reproduce
As I couldn't find the logout button, I tried to remove my account through the admin panel, when I returned to the site there was an HTTP response stating no accounts found

Expected behavior
Return to the login/register page

The entire UI does not scale to every screen size

All sizes are based off of my monitor size and what looks good. Smaller screens have some UI cut off or everything is too close together.

This is not going to be an easy fix, and this should probably wait until we begin the Alpha to fix since there's still a bit of UI to add.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.