C-Project---Multi-User-Platform
Welcome to the "Multi-User Platform" project. This is a basic project written in C, designed as a practice, focusing on implementing read-write files features in the C programming language.
- C User Authentication and Management System
This C application serves as a practice project aimed at implementing a basic user authentication and management system. While the project primarily focuses on utilizing text files for data storage, it provides functionalities for user registration, login, and access to personalized user area.
User Registration: Users can register on the platform by providing necessary details which are stored in text files.
User Login: Registered users can log in to their accounts securely to access their personalized areas.
Root User Access: The root user has special privileges to manage the platform, including database resets and user removal.
Subscription Display: Users can view a list of subscriptions, displaying their account names and level.
Personalized User Area: Upon login, users are directed to their personalized areas where they can view their level, score, and permissions.
Level Progression: Users can increase their level by playing a basic game (wordle) and winning, earning a fixed amount of scores that accumulate over time.
The project is structured in a modular manner, with different functionalities encapsulated within separate C files.
database.c: This file contains the main execution logic of the program, encompassing the user interface and interaction. The program connects to its header files, housing additional program logic such as core functionalities and auxiliary operations.
The program manages data by creating .txt files for each registered user, named using a specific convention based on the user's name and surname initials, along with the total number of registered users at the time of registration. These .txt files store user information, facilitating access, reading, and writing operations related to the user's personal area, including permissions, level, and total experience.
Additionally, the program utilizes data.txt to store user information provided during registration, and an index.txt file to track the total number of registered users, enabling various user operations such as ID number management, accessing, and removal from the root menu. The index.txt file also serves as a reference for correct ID generation.
The program is designed to be run from the command line interface (CLI). To use it, download all files, create an empty directory and name it "usr", place it where "database.c" is located, and run "database.c" from the terminal with the command "./database" (Linux) or within an integrated development environment (IDE).
Important Note: This program has been developed exclusively for Linux using C. As a result, it is fully compatible only with Linux operating systems. Attempting to run it on other operating systems may trigger a different string management system, leading to disruptions in internal logic and potential bugs.
The main menu with the available options, to access the enter the corresponding number

The program handles invalid input porperly

Limited-attempts system while doing log-in

There's a root user (the first lines inside the data.txt) with special privileges

This is the menu, with the available options.

To delete an account from the platform, enter the corresponding ID

If you don't remember the ID of the associated account, enter the option 3 to show all the account's ID and their email.

It handles non-existing ID

The option to reset the whole database will clean the data.txt and delete all the existing .txt files within the usr folder.

Back to the main menu, registering will create a txt file inside the usr folder, and will generate some lines of text in the data.txt with the user's data. These lines will be read back from the program during the log-in.

After registering, a defualt statistics belonging to the user will be created, and personal informations will be displayed.
There is also the possibility to access a game, to earn scores and increase the level.

The game support various modalities and each of them has a progressive increased difficulty.

The user has to guess a randomly choosen word among it's corresponding length words stored in txt file.

After the game the score are updated.

Again back to the main menu, there is the option to display how many subcribers, with their name and level.
