Project Prompt: LockedMe - ntnicholson/LockedMe GitHub Wiki


Project objective:

As a Full Stack Developer, complete the features of the application by planning the development in terms of sprints and then push the source code to the GitHub repository. As this is a prototyped application, the user interaction will be via a command line.

Background of the problem statement:

Company Lockers Pvt. Ltd. hired you as a Full Stack Developer. They aim to digitize their products and chose as their first project to start with. You’re asked to develop a prototype of the application. The prototype of the application will be then presented to the relevant stakeholders for the budget approval. Your manager has set up a meeting where you’re asked to present the following in the next 15 working days (3 weeks):

Specification document - Product’s capabilities, appearance, and user interactions

Number and duration of sprints required

Setting up Git and GitHub account to store and track your enhancements of the prototype

Java concepts being used in the project

Data Structures where sorting and searching techniques are used.

Generic features and three operations:

Retrieving the file names in an ascending order

Business-level operations:

Option to add a user specified file to the application

Option to delete a user specified file from the application

Option to search a user specified file from the application

Navigation option to close the current execution context and return to the main context

Option to close the application

The goal of the company is to deliver a high-end quality product as early as possible.

The flow and features of the application:

Plan more than two sprints to complete the application

Document the flow of the application and prepare a flow chart

List the core concepts and algorithms being used to complete this application

Code to display the welcome screen. It should display:

Application name and the developer details

The details of the user interface such as options displaying the user interaction information

Features to accept the user input to select one of the options listed

The first option should return the current file names in ascending order. The root directory can be either empty or contain few files or folders in it

The second option should return the details of the user interface such as options displaying the following:

Add a file to the existing directory list

You can ignore the case sensitivity of the file names

Delete a user specified file from the existing directory list

You can add the case sensitivity on the file name in order to ensure that the right file is deleted from the directory list

Return a message if FNF (File not found)

Search a user specified file from the main directory

You can add the case sensitivity on the file name to retrieve the correct file

Display the result upon successful operation

Display the result upon unsuccessful operation

Option to navigate back to the main context

There should be a third option to close the application

Implement the appropriate concepts such as exceptions, collections, and sorting techniques for source code optimization and increased performance

You must use the following:

Eclipse/IntelliJ: An IDE to code for the application

Java: A programming language to develop the prototype

Git: To connect and push files from the local system to GitHub

GitHub: To store the application code and track its versions

Scrum: An efficient agile framework to deliver the product incrementally

Search and Sort techniques: Data structures used for the project

Specification document: Any open-source document or Google Docs

Following requirements should be met:

The source code should be pushed to your GitHub repository. You need to document the steps and write the algorithms in it.

The submission of your GitHub repository link is mandatory. In order to track your task, you need to share the link of the repository. You can add a section in your document.

Document the step-by-step process starting from sprint planning to the product release.

Application should not close, exit, or throw an exception if the user specifies an invalid input.

You need to submit the final specification document which includes:

Project and developer details

Sprints planned and the tasks achieved in them

Algorithms and flowcharts of the application

Core concepts used in the project

Links to the GitHub repository to verify the project completion

Your conclusion on enhancing the application and defining the USPs (Unique Selling Points)