<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">\section{Απαιτήσεις λογισμικού} \label{section:3-3-requirements}

\begin{enumerate}[label=\textbf{&lt;ΛΑ-\arabic*&gt;}, leftmargin=\parindent, align=left, labelwidth=\parindent, labelsep=0pt]
	\sysReqItem
		{Ο χρήστης πρέπει να μπορεί να εγγραφεί στην εφαρμογή με τον Ethereum λογαριασμό του.}
		{Ο χρήστης πρέπει να μπορεί να εγγραφεί στην εφαρμογή, πατώντας το κουμπί "Sign Up" και συμπληρώνοντας τα απαραίτητα πεδία σύμφωνα με τις οδηγίες. Το πεδίο "Username" είναι υποχρεωτικό να συμπληρωθεί και ορίζεται με μοναδικό τρόπο. Σε περίπτωση που ο χρήστης εισάγει μη διαθέσιμο Username, το σύστημα θα πρέπει να μην επιτρέπει στον χρήστη να συνεχίσει και να προβάλει αντίστοιχο μήνυμα λάθους. Τα πεδία "Profile picture URL" και "Location" είναι προαιρετικά.}
		{?}{TODO}
		{?}{TODO}

	\sysReqItem
		{Ο χρήστης πρέπει να συνδέεται αυτόματα, εφόσον είναι εγγεγραμμένος.}
		{Το σύστημα πρέπει να διαπιστώνει αυτόματα εάν το τρέχον Ethereum address έχει λογαριασμό στην εφαρμογή και εάν ναι, να συνδέει να τον χρήστη, ανακτώντας το Username του από το blockchain και προβάλλοντάς το στο μενού.}
		{?}{TODO}
		{?}{TODO}

	\sysReqItem
		{Το σύστημα πρέπει να δημιουργεί τις βάσεις δεδομένων του χρήστη.}
		{Το σύστημα πρέπει να δημιουργεί τις βάσεις δεδομένων του χρήστη, εάν αυτές δεν υπάρχουν ήδη τοπικά. Όταν ο χρήστης ξεκλειδώσει τον Ethereum λογαριασμό του, το σύστημα θα πρέπει να τον προτρέπει να υπογράψει με το ιδιωτικό του κλειδί μία συναλλαγή που θα εξασφαλίζει τη γνησιότητα των βάσεών του και των δεδομένων που αυτές θα εμπεριέχουν.}
		{?}{TODO}
		{?}{TODO}

	\sysReqItem
		{Ο χρήστης πρέπει να μπορεί να δημιουργεί θέματα (topics).}
		{Ο χρήστης πρέπει να μπορεί να δημιουργεί νέα θέματα. Αυτό το επιτυγχάνει πατώντας το κουμπί "New Topic", συμπληρώνοντας τα υποχρεωτικά πεδία της φόρμας ("Topic subject" και "First post content"), πατώντας το κουμπί "Create Topic" και επιβεβαιώνοντας τη συναλλαγή στο Ethereum.}
		{?}{TODO}
		{?}{TODO}

	\sysReqItem
		{Ο εγγεγραμμένος χρήστης πρέπει να μπορεί να περιηγείται σε θέματα.}
		{Ο εγγεγραμμένος χρήστης πρέπει να μπορεί να περιηγείται σε θέματα, πατώντας σε κάποιο θέμα της αρχικής οθόνης και, έπειτα, χρησιμοποιώντας τα βέλη, να περιηγηθεί στο ιστορικό των μηνυμάτων του θέματος.}
		{?}{TODO}
		{?}{TODO}

	\sysReqItem
		{Ο εγγεγραμμένος χρήστης πρέπει να μπορεί να δημιουργεί μηνύματα (posts).}
		{Ο εγγεγραμμένος χρήστης πρέπει να μπορεί να δημιουργεί μηνύματα στο θέμα που επιθυμεί. Αυτό επιτυγχάνεται συμπληρώνοντας το πεδίο νέου μηνύματος στην οθόνη του θέματος, πατώντας το κουμπί "Post" και επιβεβαιώνοντας τη συναλλαγή στο Ethereum.}
		{?}{TODO}
		{?}{TODO}

	\sysReqItem
		{Ο χρήστης πρέπει να μπορεί να τροποποιεί τα μηνύματά του.}
		{Ο χρήστης πρέπει να μπορεί να τροποποιεί τα μηνύματά του. Αυτό το επιτυγχάνει πατώντας το κουμπί επεξεργασίας στο εκάστοτε μήνυμα, τροποποιώντας το μήνυμα και πατώντας το κουμπί επιβεβαίωσης. Στη συνέχεια, το σύστημα τροποποιεί το περιεχόμενο του μηνύματος στη βάση δεδομένων του χρήστη ανάλογα. Σε περίπτωση που ο χρήστης αλλάξει γνώμη κατά τη διάρκεια της διαδικασίας της επεξεργασίας, μπορεί να πατήσει το κουμπί ακύρωσης και να αναιρέσει τις αλλαγές που πραγματοποίησε.}
		{?}{TODO}
		{?}{TODO}

	\sysReqItem
		{Ο χρήστης πρέπει να μπορεί να διαγράφει τα μηνύματά του.}
		{Ο χρήστης πρέπει να μπορεί να διαγράφει τα μηνύματά του. Αυτό το επιτυγχάνει πατώντας το κουμπί διαγραφής στο εκάστοτε μήνυμα. Στη συνέχεια, το σύστημα αφαιρεί το περιεχόμενο του μηνύματος από τη βάση δεδομένων του χρήστη.}
		{?}{TODO}
		{?}{TODO}	

	\sysReqItem
		{Ο εγεγγραμμένος χρήστης πρέπει να μπορεί να ψηφίζει σε μηνύματα άλλων χρηστών.}
		{Ο εγεγγραμμένος χρήστης πρέπει να μπορεί να υπερψηφίζει ή να καταψηφίζει μηνύματα άλλων χρηστών. Αυτό το επιτυγχάνει πατώντας τα παρακείμενα κουμπιά "+" ή "-" αντίστοιχα και επιβεβαιώνοντας τη συναλλαγή στο Ethereum (οι ψήφοι αποθηκεύονται εκεί). Η διαδικασία ισχύει και για την τροποποίηση ή την αφαίρεση μίας ψήφου από τον χρήστη.}
		{?}{TODO}
		{?}{TODO}	

	\sysReqItem
		{Ο εγεγγραμμένος χρήστης πρέπει να μπορεί να δημιουργεί ψηφοφορίες (polls).}
		{Ο εγεγγραμμένος χρήστης πρέπει να μπορεί να δημιουργεί ψηφοφορίες. Αυτό το επιτυγχάνει πατώντας "Add Poll" στην οθόνη δημιουργία θέματος και συμπληρώνοντας τα απαραίτητα πεδία.}
		{?}{TODO}
		{?}{TODO}	

	\sysReqItem
		{Ο εγεγγραμμένος χρήστης πρέπει να μπορεί να ψηφίζει σε ψηφοφορίες.}
		{Ο εγεγγραμμένος χρήστης πρέπει να μπορεί να ψηφίζει σε ψηφοφορίες, σύμφωνα με τους εκάστοτε κανόνες.}
		{?}{TODO}
		{?}{TODO}

	\sysReqItem
		{Ο χρήστης πρέπει να μπορεί να διαγράφει τα τοπικά δεδομένα.}
		{Ο χρήστης πρέπει να μπορεί να διαγράφει τα τοπικά δεδομένα. Αυτό το επιτυγχάνει πατώντας στο κουμπί "Clear databases" του μενού και επιβεβαιώνοντας τη διαγραφή μέσω ενός pop-up διαλόγου.}
		{?}{TODO}
		{?}{TODO}

	\sysReqItem
		{Ο χρήστης πρέπει να μπορεί να δημιουργεί υποκοινότητες.}
		{Ο χρήστης πρέπει να μπορεί να δημιουργεί υποκοινότητες, μέσω κουμπιού της αρχικής οθόνης.}
		{?}{TODO}
		{?}{TODO}	

	\sysReqItem
		{Κατά τη δημιουργία υποκοινότητας, ο χρήστης πρέπει να έχει τη δυνατότητα να ορίσει ένα contract που θα παρέχει προσαρμοσμένα tokens για αυτήν.}
		{Κατά τη δημιουργία υποκοινότητας, ο χρήστης πρέπει να έχει τη δυνατότητα να ορίσει ένα contract που θα παρέχει προσαρμοσμένα tokens για αυτήν. Τα tokens αυτά θα διαμοιράζονται με τον τρόπο που επιθυμεί η κοινότητα και θα είναι εκείνα τα οποία θα καθορίζουν τους έγκυρους ψηφοφόρους της.}
		{?}{TODO}
		{?}{TODO}
\end{enumerate}

\begin{enumerate}[label=\textbf{&lt;ΜΛΑ-\arabic*&gt;}, leftmargin=\parindent, align=left, labelwidth=\parindent, labelsep=0pt]
	\sysReqItem
		{Τα δεδομένα πρέπει να αποθηκεύονται επί του blockchain μόνο όταν είναι απαραίτητο.}
		{}
		{?}{TODO}
		{?}{TODO}
	\sysReqItem
		{Τα contracts της εφαρμογής πρέπει να είναι αναβαθμίσιμα.}
		{}
		{?}{TODO}
		{?}{TODO}
\end{enumerate}


</pre></body></html>