Detailed documentation for backend modules is available in /docs/backend/ and /docs/api/.
- Project Description
- System Requirements
- Installation
- First Launch
- Registration and Login
- Main Interface
- Private Chats
- Groups
- Advanced Features
- User Profile
- Troubleshooting
- FAQ
- License
- Authors and Acknowledgments
- Document Version
Ruggine is a real-time messaging platform designed to ensure security, privacy, and performance through end-to-end (E2E) encryption and advanced session management. The project represents a concrete example of a scalable application, developed entirely in Rust.
- End-to-End Encryption: Completely private and encrypted messages
- Private Chats and Groups: Communicate with individual users or groups
- Typing Indicators: Know when someone is typing
- Responsive Interface: Works on desktop and mobile
- Modern Design: Intuitive interface
- Browser: Chrome, Firefox, Safari or Edge
- Connection: Stable internet
- Operating System: Windows, macOS, Linux, Android and iOS
- Node.js: version 16.x or higher
- Rust: version 1.70 or higher
- SQLite: included automatically
- Docker (optional): for containerization
- Language: Rust (recommended: rustc 1.70.0 or higher)
- Main Frameworks/Libraries: Axum, Tokio, SQLx, Serde, Redis, Scrypt, AES-GCM, uuid, chrono
- Database: SQLite (relational, embedded)
- Tooling: Cargo, Redis, PlantUML
git clone https://github.com/PdS2425-C2/G38.git
cd G38cd frontend
npm install
cd .../start.shStartup options:
./start.sh- Start with clean database (default)./start.sh --maintaindb- Maintain existing data./start.sh --help- Show all available options
Once started, access it at:
http://localhost:3002
If you start locally, 10 test accounts are available:
- Users: user1 - user10
- Password: demo123456
Log in with one of these accounts to test the features.
To log in, enter your Username and your Password. Your password also serves as the decryption key for your messages, so it is essential not to forget it.
The login screen allows you to log in or switch to registration.
If you don't have an account, click on "Sign up" on the login page. You will need to provide:
- Username (minimum 3 characters)
- Password (minimum 8 characters)
- Confirm Password
Important: Since we use E2E encryption based on your password, it is not possible to recover the password if you forget it. Your messages would be lost forever.
To try the application quickly, buttons are available on the login page to access with preconfigured demo accounts (user1, user2, etc.). The password for all is demo123456.
- Active Session
- The session remains active until you log out
- If you close the browser, you remain logged in when you return
- Click on the menu icon (hamburger ☰) at the top left
- Select "Exit"
- You will be redirected to the login page
After logging in, you will be redirected to the main Chat screen.
On desktop, the interface is divided into two columns:
- Left (Sidebar): List of recent conversations and user status.
- Right (Chat View): The currently selected conversation.
Example of the chat interface with the list on the left and messages on the right.
On mobile devices, the interface is optimized:
- Chat List: You view the list of conversations.
- Chat View: Tapping a conversation opens it full screen.
- Navigation: Use the "Back" arrow in the chat header to return to the list.
Navbar (at the top)
- Logo/Application Name
- Profile menu
Sidebar/Chat List (left)
- List of all active conversations
- Online status indicator (green = online, gray = offline)
- Unread indicator (blue number)
- Typing indicator (gray)
Main Chat Area
- Messages from the selected conversation
- Received messages on the left, sent on the right
- Shows who is typing
- Input field to write messages
- Click on Start chat (🔍) in the navbar
- Type the username of the person you want to chat with
- Select the user from the results
- The chat opens automatically
- (green) = User online
- (gray) = User offline
- (gray) = User is typing
-
Access the Groups section
- Click on "Groups" in the navbar or sidebar
-
Click on "Create Group"
- A creation dialog appears
-
Fill in the Details
- Group Name: Name of the group conversation (required)
- Description: Brief description (optional)
- Avatar/Image: Group photo (optional)
-
Select Members
- Search and add the users you want to invite (minimum 2 members, besides you)
-
Create the Group
- Click "Create"
- The group is created and members receive an invitation
Modify Information:
- Access the group
- Click on the settings icon at the top right
- Modify name, description, avatar
- Save changes
Add Members:
- Click on "Invite Users" in the settings
- Search and select users
- Send the invitation
Remove Members:
- Go to the group settings
- Select the member to remove from the members list
- Click "Remove"
- The member will be removed from the group
Delete the Group:
- Go to settings
- Click "Delete Group"
- Confirm the action
- The group is deleted for all members
View Details:
- Click on the group name at the top
Leave the Group:
- Go to settings
- Click "Leave Group"
- Confirm
- You will be removed and will no longer see the group
- The procedure is identical to private chats
- Type the message and press Enter
- All group members will receive the message
Receiving an Invitation:
- An invitation appears in the "Invitations" section
- Click "Accept" to join the group
- Click "Decline" to decline
Accepting an Invitation:
- Visit the "Invitations" page from the menu
- Select the invitation
- Click "Accept"
- You will be added to the group
When someone is typing in the conversation, you will see:
- An indication or "someone is typing..."
- This disappears when the message is sent
- Click on the profile icon in the navbar
- Or click on your avatar in the sidebar
Change Avatar/Profile Photo:
- Click on the profile photo
- Select an image from your device (JPG, PNG, WEBP are supported; max 5MB)
- The photo is uploaded automatically
- If you don't upload a photo, you will see your initial as avatar
Possible Causes and Solutions:
-
Wrong Password
- Verify that you have typed the correct password (pay attention to uppercase letters)
- Use the "Forgot Password" function if available
-
Expired Session
- Log out and log in again
- Clear browser cookies if the problem persists
-
Connection Problems
- Verify that you have a stable internet connection
- Try with another browser
- Restart the browser
Possible Causes and Solutions:
-
No Internet Connection
- Verify the connection
- If the message shows, the message was not sent
- Once reconnected, the message will be sent automatically
-
Recipient Offline
- If the user is offline, the message will still be delivered when they reconnect
- This is normal behavior
-
Expired Session
- Log out and log in again
- Try sending the message again
Possible Causes and Solutions:
-
Wrong Username
- Verify the exact spelling of the username
- Usernames are case-sensitive (uppercase/lowercase matters)
-
User Not Registered
- The user might not have signed up yet
- Ask the person for the exact username
-
Deleted User
- If the account was deleted, it will no longer be visible
(This section is currently under development. For any questions not covered in the Troubleshooting section, please refer to the technical documentation or contact support.)
This project is distributed under the MIT license.
Authors: Alessio Meini, Luca Ostinelli, Simone Ventura, Luca Visconti
Supervisor: Prof. Maurizio Rebaudengo
Completion Date: December 2, 2025
- Date: December 2, 2025
- Version: 1.0
- Application: Ruggine Chat Platform
- Status: Production Ready
- Future Updates: At the discretion of the development team
