- Initialize Spring project
- Database
- Currently, data is stored using SQLite in
todo.db
file in root folder - User
- users_roles (many-to-many)
- Role (high-level roles)
- roles_privileges (many-to-many)
- Privilege (low-level permissions)
- verification_token
- persistent_logins
- password_reset_token
- security_question
- security_question_definition
- users_follows(
follower
is following thefollowed
user)
- Todo
- todo-log
- todos_logs
- Set username & password
- Migrate to MySQL
- Currently, data is stored using SQLite in
- General
- Header/Navigation/Footer fragments
Spring Security JSP Taglib
is added for easier control of authenticated users
- Set page title
- Each page's title is encapsulated in
model
- Each page's title is encapsulated in
- Support UTF-8 encoding
- Handle exceptions with exact error reason
- All exceptions will be redirected to
/error
showing the reason and what happened. - If any error occurs in subdirectories, the page is not shown correctly
- All exceptions will be redirected to
- Multi-language (English / Italian)
- Currently
user-session
based - Change static texts to
<spring:message code="key"/>
- Currently
- Header/Navigation/Footer fragments
- Search
- in Todos
- in Gym
- Plans
- Workouts
- Access Management
- User
- Profile
- Account details
- Name, Bio, Location
- Photo
- Change password
- Delete account
- Security
- Who can see me?
- Account details
- User's Public Page
- Follower / Following
- Follow / Unfollow
- 🟡 a user can follow any user, multiple times
- Follow / Unfollow
- Profile
- Log in
- Spring Security
- There are two roles
ROLE_USER
andROLE_ADMIN
- Everyone can access
Log in
orSign up
, but for accessing the todos, the user must log in or sign up first. - User can not login on multiple clients at the same time
- After login, user shouldn't be able to login again
- Field validation
- Log out
- Forgot my password
- The data is separately stored in
PasswordResetToken
with 12-hour limit - Security Question
- Field validation
- The data is separately stored in
- Remember me
- Note that the check-box should be
... name="remember-me" ...
- Client-side (cookie)
- Server-side (persistence)
- ❌ it seems db is not populated
- Note that the check-box should be
- Logged in user, should not be able to reach pages like "Login", "Signup", ...
- Managed in
SecurityConfiguration
, by defining the rules
- Managed in
- Signup new user
- All new users are registered as
USER
- Filed validation
- Security Question
- Entity
SecurityQuestionDefinition
stores the questions. - Entity
SecurityQuestion
manages the relationship between theUser
and it's securityquestion_id
&answer
. - It appears while signing up or changing password.
- Entity
- Password
- Passwords are encrypted with BCrypt 10
- Password strength and validation on front-end & back-end
- It is done with
jQuery
&pwstrength.js
- It is done with
- Password confirmation
- Profile Photo
- It is optional, so user can add/update it later from his profile page
- Photo's name is changed to
username + .jpg
- It uses
Storage Service
to handle file upload. This interface can be extended for any other file types or customizations
- Successful sign up
- Email verification
- I used
smtp.gmail.com
as the server. Your email credentialsusername
&password
must be inserted inapplication.properties
- The user has 24 hours to verify his account
- Token is valid
- Token is not valid
- Token is expired
- User already activated
- I used
- Email verification
- Unsuccessful sign up
- Show errors & exceptions
- All new users are registered as
- User
- Logger
- Define logger utility
- Log events
- Query Optimization
- Charts
- Todo
- Start-End range
- Gantt (completed / not-completed)
- Gym
- Plan
- Workout
- Todo
- Test
- Test report
- with
mvn clean test
ormvn site -DgenerateReports=false
- with
- Test coverage report
- Implementing smoke & regression tests
- Test report
- Sections
- Admin panel
- General
- Site name & description
- Footer copyright
- Anyone can register?
- Shows/Hides the links in pages
- Changes security policy for accessing
signup
page
- Default role for registered user
- Add new role
- Modify role
- Date Structure
- Time structure
- Language
-
- Admin can configure the language/country of whole system
-
- Any user can change the language/country of current session by himself (in footer)
-
- Users
- If user has
ROLE_ADMIN
, she can access the dashboard - List of online users
- 1-click user's state change
- 1-click delete user
- Modify user
- Add new user
- Handle mistakes like signing up a new user
- Email verification if user is suspended
- Set specified roles
- Support multiple roles
- Define new roles
- If user has
- Todos
- Delete (admin needs only delete todos, nothing more is needed)
- Page size
- Allow search engines to fetch public todos
- Users must be registered to access a public page
- Users must be registered to access a public todo
- Manage Todo types & priority
- Email
- Admin email
- Configurations
- Formats
- Security
- How long lasts verification email
- How long lasts reset password email
- Newly registered users must be verified for further access
- Password combination
- Define new security questions
- General
- Todos
- All user's todos
- Public / Private
- Management
- Add new
- Modify
- Complete & Archive
- Cancel/Resume (todo is never deleted, but kept forever, can be resumed)
- Log
- During working on the todo, user might need to comment some thoughts
- Not editable, only removable
- Type
- 1-time
- Repeatable
- Reminder
- mini-Task
- Subtasks
- Progress bar
- Wishes
- Todos that will be taken care later, at unknown time. When the user wants, he can turn a
wish
into a todo - Other users can comment on his wishes, or help with appropriate advices
- Todos that will be taken care later, at unknown time. When the user wants, he can turn a
- Personal Life Cycle Test
- The test is currently in Persian
- Gym
- Gym homepage
- All plans
- Active plans
- Completed plans
- Blog posts
- Plan shop
- Payment
- Record management
- Plan
- View
- Add
- Delete
- Workout
- View
- Add
- Delete
- Workout log (❗ only available in active plan)
- Add
- Edit
- Delete
- Plan
- Search
- Plans
- Workouts
- Blog
- Filter plans
- Statistics
- Plan
- Workout days and distances
- Percentage of trained muscles
- Numerical stats (start/end weight, difference, progress, total reps/weights)
- Workout
- Progress trend
- Reps history
- Numerical stats (start/end weight, difference, progress, total reps/weights)
- Plan
- Gym homepage
- Admin panel