Skip to content

Commit 86abba4

Browse files
committed
Add table of contents
1 parent 6847092 commit 86abba4

File tree

2 files changed

+132
-42
lines changed

2 files changed

+132
-42
lines changed

docs/DeveloperGuide.md

+86-42
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,70 @@
33
title: "Developer Guide"
44
pageNav: 3
55
---
6+
<bottom-head>
7+
<link rel="stylesheet" href="stylesheets/userguide.css">
8+
</bottom-head>
69

710
# SEPlendid Developer Guide
811

9-
<!-- * Table of Contents -->
10-
<page-nav-print />
12+
## 1. About SEPlendid
13+
14+
SEPlendid is a Course Mapping System that allows NUS Computing students to seamlessly plan for their overseas courses,
15+
for the highly coveted Student Exchange Programmes (SEP). As a student, you can view and find course mappings in order
16+
to plan for your overseas studies without the hassle of creating complex Excel sheets. Utilise SEPlendid's course
17+
mapping function in order to quickly find possible mappings for certain courses you want to map. Finally, SEPlendid's
18+
note-taking system will assist you in organising your important information you will need for planning for your courses.
19+
20+
## 2. Table of Contents
21+
<div class= "toc">
22+
23+
1. [About SEPlendid](#1-about-seplendid)
24+
2. [Table of Contents](#2-table-of-contents)
25+
3. [Setting up, Getting Started](#3-setting-up-getting-started)
26+
4. [Design](#4-design)
27+
- 4.1 [Architecture](#4-1-architecture)
28+
- 4.2 [UI Component](#4-2-ui-component)
29+
- 4.3 [SEPlendidLogic Component](#4-3-seplendidlogic-component)
30+
- 4.4 [Model Component](#4-4-model-component)
31+
- 4.5 [Storage Component](#4-5-storage-component)
32+
- 4.6 [Common Classes](#4-6-common-classes)
33+
5. [Implementation](#5-implementation)
34+
- 5.1 [Parser to Handle Commands with Optional Arguments](#5-1-parser-to-handle-commands-with-optional-arguments)
35+
- 5.2 [Mapping Feature](#5-2-mapping-feature)
36+
- 5.3 [Sorting Feature](#5-3-sorting-feature)
37+
- 5.4 [University Feature](#5-4-university-feature)
38+
- 5.5 [[Proposed] Data Archiving](#5-5-proposed-data-archiving)
39+
6. [Other Helpful Guides](#6-other-helpful-guides)
40+
7. [Effort](#7-effort)
41+
- 7.1 [Morphing of AB3 to SEPlendid](#7-1-morphing-of-ab3-to-seplendid)
42+
- 7.2 [Redesigning the UI](#7-2-redesigning-the-ui)
43+
8. [Requirements](#8-requirements)
44+
- 8.1 [Product Scope](#8-1-product-scope)
45+
- 8.2 [User Stories](#8-2-user-stories)
46+
- 8.3 [Use Cases](#8-3-use-cases)
47+
- 8.4 [Non-Functional Requirements](#8-4-non-functional-requirements)
48+
- 8.5 [Glossary](#8-5-glossary)
49+
9. [Instructions for Manual Testing](#9-instructions-for-manual-testing)
50+
- 9.1 [Launch and Shutdown](#9-1-launch-and-shutdown)
51+
- 9.2 [Local Course](#9-2-local-course)
52+
- 9.3 [Partner Course](#9-3-partner-course)
53+
- 9.4 [University](#9-4-university)
54+
- 9.5 [Mapping](#9-5-mapping)
55+
- 9.6 [Note](#9-6-note)
56+
57+
</div>
1158

1259
--------------------------------------------------------------------------------------------------------------------
1360

14-
## **Acknowledgements**
15-
16-
_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_
17-
18-
--------------------------------------------------------------------------------------------------------------------
19-
20-
## **Setting up, getting started**
61+
## 3. Setting up, Getting Started
2162

2263
Refer to the guide [_Setting up and getting started_](SettingUp.md).
2364

2465
--------------------------------------------------------------------------------------------------------------------
2566

26-
## **Design**
67+
## 4. Design
2768

28-
### Architecture
69+
### 4.1 Architecture
2970

3071
<puml src="diagrams/ArchitectureDiagram.puml" width="280" />
3172

@@ -66,7 +107,7 @@ For example, the `SeplendidLogic` component defines its API in the `SeplendidLog
66107

67108
The sections below give more details of each component.
68109

69-
### UI component
110+
### 4.2 UI Component
70111

71112
**API** : [`Ui.java`](https://github.com/AY2324S1-CS2103T-W10-2/tp/blob/master/src/main/java/seedu/address/ui/Ui.java)
72113

@@ -83,7 +124,7 @@ The `UI` component,
83124
* keeps a reference to the `SeplendidLogic` component, because the `UI` relies on the `SeplendidLogic` to execute commands.
84125
* depends on some classes in the `Model` component, as it displays `LocalCourse`, `PartnerCourse`, `University`, `Mapping`, and `Note` objects residing in the `Model`.
85126

86-
### SeplendidLogic component
127+
### 4.3 SeplendidLogic Component
87128

88129
**API** : [`SeplendidLogic.java`](https://github.com/AY2324S1-CS2103T-W10-2/tp/blob/master/src/main/java/seedu/address/logic/SeplendidLogic.java)
89130

@@ -115,7 +156,13 @@ How the parsing works:
115156
* When called upon to parse a user command, the `SeplendidParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `LocalCourseAddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `LocalCourseAddCommand`) which the `SeplendidParser` returns back as a `Command` object.
116157
* All `XYZCommandParser` classes (e.g., `LocalCourseAddCommandParser`, `NoteDeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.
117158

118-
### Model component
159+
### 4.4 Model Component
160+
**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)
161+
162+
<puml src="diagrams/ModelClassDiagram.puml" width="450" />
163+
164+
165+
The `Model` component,
119166

120167
**API
121168
** : [`SeplendidModel.java`](https://github.com/AY2324S1-CS2103T-W10-2/tp/blob/master/src/main/java/seedu/address/model/SeplendidModel.java)
@@ -139,7 +186,7 @@ The `SeplendidModel` component,
139186
* does not depend on any of the other three components (as the `SeplendidModel` represents data entities of the domain,
140187
they should make sense on their own without depending on other components)
141188

142-
### Storage component
189+
### 4.5 Storage Component
143190

144191
**API
145192
** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)
@@ -156,17 +203,16 @@ The `Storage` component,
156203
* depends on some classes in the `SeplendidModel` component (because the `Storage` component's job is to save/retrieve
157204
objects that belong to the `SeplendidModel`).
158205

159-
### Common classes
206+
### 4.6 Common Classes
160207

161208
Classes used by multiple components are in the `seedu.addressbook.commons` package.
162209

163210
--------------------------------------------------------------------------------------------------------------------
164211

165-
## **Implementation**
212+
## 5. Implementation
166213

167214
This section describes some noteworthy details on how certain features are implemented.
168-
169-
### Parser to handle both commands with and without arguments
215+
### 5.1 Parser to Handle Commands with Optional Arguments
170216

171217
The below diagram gives a high-level overview on how the `SeplendidParser` parses a command from our command set:
172218
<puml src="diagrams/SeplendidParserActivityDiagram.puml" alt="SeplendidParserActivityDiagram" />
@@ -234,7 +280,7 @@ Each data type has different attributes
234280
that can be used for sorting.
235281
--------------------------------------------------------------------------------------------------------------------
236282

237-
### Mapping feature
283+
### 5.2 Mapping Feature
238284

239285
The mapping `list/add/delete` mechanism is facilitated by `MappingCatalogue`. It stores `Mapping` objects which
240286
contain the `LocalCode`, `UniversityName`, `PartnerCode` and `MappingMiscInformation` objects. This means that
@@ -312,9 +358,7 @@ non-empty, the deletion will be performed, otherwise a `CommandException` will b
312358
done correctly.
313359

314360
--------------------------------------------------------------------------------------------------------------------
315-
316-
### Sorting feature
317-
361+
### 5.3 Sorting Feature
318362
#### Implementation
319363

320364
#### Design considerations
@@ -332,7 +376,7 @@ non-empty, the deletion will be performed, otherwise a `CommandException` will b
332376

333377

334378
--------------------------------------------------------------------------------------------------------------------
335-
### University Feature
379+
### 5.4 University Feature
336380

337381
The university `list/search/sort` mechanism is facilitated by `UniversityCatalogue`. It stores `University` objects
338382
which contain the `UniversityName` object. This means that `University` is dependent on `University` class.
@@ -385,14 +429,14 @@ The following activity diagram summarizes what happens when a user executes a ne
385429

386430
_{more aspects and alternatives to be added}_
387431

388-
### \[Proposed\] Data archiving
432+
### 5.5 \[Proposed\] Data Archiving
389433

390434
_{Explain here how the data archiving feature will be implemented}_
391435

392436

393437
--------------------------------------------------------------------------------------------------------------------
394438

395-
## **Documentation, logging, testing, configuration, dev-ops**
439+
## 6. Other helpful Guides
396440

397441
* [Documentation guide](Documentation.md)
398442
* [Testing guide](Testing.md)
@@ -402,16 +446,16 @@ _{Explain here how the data archiving feature will be implemented}_
402446

403447
--------------------------------------------------------------------------------------------------------------------
404448

405-
## Effort
449+
## 7. Effort
406450

407451
The implementation of SEPlendid proved to be a challenging endeavor. Below is the highlights of the extensive effort our
408452
team dedicated to developing SEPlendid, along with a mention of some of the challenges we encountered along the way.
409453

410-
### Morphing of AB3 to SEPlendid
454+
### 7.1 Morphing of AB3 to SEPlendid
411455

412456
A large portion of code had to be refactored to morph AB3 to SEPlendid.
413457

414-
### Redesigning the UI
458+
### 7.2 Redesigning the UI
415459

416460
In recognising the significance of minimalism for achieving simplicity, we embarked on the task of redesigning the
417461
original AB3 UI into our custom SEPlendid interface. The endeavor underscored the essential balance between simplicity
@@ -423,9 +467,9 @@ requirements of a student exchange program mapping tool.
423467

424468
--------------------------------------------------------------------------------------------------------------------
425469

426-
## **Appendix: Requirements**
470+
## 8. Requirements
427471

428-
### Product scope
472+
### 8.1 Product Scope
429473

430474
**Target user profile**:
431475

@@ -448,7 +492,7 @@ SEPlendid aims to provide an advanced search, allowing users to search for mappi
448492
as partner universities' course names, and NUS course codes. We aim to also include features such as the ability to
449493
contribute course mappings, and note-taking.
450494

451-
### User stories
495+
### 8.2 User Stories
452496

453497
Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`
454498

@@ -481,7 +525,7 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli
481525

482526
*{More to be added}*
483527

484-
### Use cases
528+
### 8.3 Use Cases
485529

486530
(For all use cases below, the **System** is the `SEPlendid` and the **Actor** is the `user`, unless specified otherwise)
487531

@@ -854,7 +898,7 @@ Use case ends
854898
Use case resumes at step 2.
855899

856900

857-
### Non-Functional Requirements
901+
### 8.4 Non-Functional Requirements
858902

859903
1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.
860904
2. Should be able to hold up to 1000 course mappings, along with its dependent data such as local courses, without a
@@ -865,7 +909,7 @@ Use case ends
865909
5. The user interface should be intuitive enough for users who are not IT-savvy.
866910
6. The application should be designed to handle a growing database of course mappings and related data.
867911

868-
### Glossary
912+
### 8.5 Glossary
869913

870914
* **Mainstream OS**: Windows, Linux, Unix, OS-X.
871915
* **Course Mapping**: A course offered by a partner university, which NUS Computing students going on exchange can
@@ -875,7 +919,7 @@ Use case ends
875919

876920
--------------------------------------------------------------------------------------------------------------------
877921

878-
## **Appendix: Instructions for manual testing**
922+
## 9. Instructions for Manual Testing
879923

880924
Given below are instructions to test the app manually.
881925

@@ -886,7 +930,7 @@ testers are expected to do more *exploratory* testing.
886930

887931
</box>
888932

889-
### Launch and shutdown
933+
### 9.1 Launch and Shutdown
890934

891935
1. Initial launch
892936

@@ -897,7 +941,7 @@ testers are expected to do more *exploratory* testing.
897941
1. Double-click the jar file <br>
898942
Expected: Shows the GUI with a set of sample local course. The window size may not be optimum.
899943

900-
### Local Course
944+
### 9.2 Local Course
901945

902946
#### List all local courses
903947

@@ -994,7 +1038,7 @@ Expected Output in the Command Output Box: Sorted all local courses
9941038

9951039
</box>
9961040

997-
### Partner Course
1041+
### 9.3 Partner Course
9981042

9991043
#### List all partner courses
10001044

@@ -1114,7 +1158,7 @@ Expected Output in the Command Output Box: Sorted all partner courses
11141158

11151159
</box>
11161160

1117-
### University
1161+
### 9.4 University
11181162

11191163
#### List all universities
11201164

@@ -1170,7 +1214,7 @@ Expected Output in the Command Output Box: Sorted all universities
11701214

11711215
</box>
11721216

1173-
### Mapping
1217+
### 9.5 Mapping
11741218

11751219
#### List all mappings
11761220

@@ -1255,7 +1299,7 @@ Expected Output in the Command Output Box: Sorted all mappings
12551299
</box>
12561300

12571301

1258-
### Note
1302+
### 9.6 Note
12591303

12601304
#### List all notes
12611305

docs/stylesheets/developerguide.css

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
.bordered-table {
2+
border-collapse: collapse;
3+
}
4+
5+
.bordered-table th {
6+
border: 1px solid black;
7+
border-bottom: 2px solid black;
8+
}
9+
10+
.bordered-table td {
11+
border: 1px solid black;
12+
padding: 6px;
13+
}
14+
15+
.bordered-table tr:nth-child(even) {
16+
background-color: rgba(0, 0, 0, 0.05);
17+
18+
}
19+
20+
.centered-container {
21+
display: flex;
22+
align-items: center;
23+
justify-content: center;
24+
text-align: center;
25+
}
26+
27+
.resized-image {
28+
width: 700px;
29+
height: auto; /* Maintain aspect ratio */
30+
}
31+
32+
.centered-content {
33+
display: flex;
34+
flex-direction: column;
35+
align-items: center;
36+
text-align: center;
37+
font-style: italic;
38+
}
39+
40+
.toc ul {
41+
list-style-type: none;
42+
}
43+
44+
.image-caption {
45+
max-width: 70%;
46+
}

0 commit comments

Comments
 (0)