# Developing an admin platform for SEF-fellowship program

**URL:** <https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20>\
**Category:** Development\
**Created:** [March 26, 2020, 2:51pm UTC](https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20 "2020-03-26T14:51:17Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Gravewalker](https://yyz2.discourse-cdn.com/free1/user_avatar/sef.discourse.group/gravewalker/32/12_2.png) [@Gravewalker](https://sef.discourse.group/u/Gravewalker)\
**Post date:** [March 26, 2020, 2:51pm UTC](https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20/1 "2020-03-26T14:51:17Z")

</div>

SEF fellowship is a program where SEF rewards people who have done something for global education via SEF. The initial idea was to create a platform where an admin can log in and create a certificate to be given to the SEF fellow.  
Currently, I’m working on this task and to give a technical review, My plan is to use a spring boot API with a MySQL database as the backend and use react admin dashboard to manage the CRUD operations.

---

<div class="post-metadata">

**Author:** ![jaye](https://yyz2.discourse-cdn.com/free1/user_avatar/sef.discourse.group/jaye/32/810_2.png) [@jaye](https://sef.discourse.group/u/jaye)\
**Post date:** [March 27, 2020, 2:59pm UTC](https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20/2 "2020-03-27T14:59:28Z")

</div>

That’s great! We can go without a certificate as we discussed on the meeting. Let’s display it on a nicely designed webpage. Also, let’s make this dashboard generic. Which means whatever the functionalities like this fellowship program we come up in the future should be achieved using the same application.

---

<div class="post-metadata">

**Author:** ![jaye](https://yyz2.discourse-cdn.com/free1/user_avatar/sef.discourse.group/jaye/32/810_2.png) [@jaye](https://sef.discourse.group/u/jaye)\
**Post date:** [April 3, 2020, 12:30pm UTC](https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20/3 "2020-04-03T12:30:16Z")

</div>

@Gravewalker This is what I said to you earlier. : [https://ant.design/](https://ant.design/)  
It is a react UI library with a set of high-quality React components, one of the best React UI libraries for admin dashboards.  
Here is a preview: [https://preview.pro.ant.design/dashboard/analysis](https://preview.pro.ant.design/dashboard/analysis)

I you like I can help you to initiate a project this weekend. 😃

---

<div class="post-metadata">

**Author:** ![Gravewalker](https://yyz2.discourse-cdn.com/free1/user_avatar/sef.discourse.group/gravewalker/32/12_2.png) [@Gravewalker](https://sef.discourse.group/u/Gravewalker)\
**Post date:** [April 3, 2020, 3:46pm UTC](https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20/5 "2020-04-03T15:46:46Z")

</div>

Sure! It would be great if you can give me a hand on initiating the project. Thank you!

---

<div class="post-metadata">

**Author:** ![Gravewalker](https://yyz2.discourse-cdn.com/free1/user_avatar/sef.discourse.group/gravewalker/32/12_2.png) [@Gravewalker](https://sef.discourse.group/u/Gravewalker)\
**Post date:** [April 5, 2020, 12:58pm UTC](https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20/6 "2020-04-05T12:58:08Z")

</div>

@jaye, This is the current status of the project.  
I have developed a simple front end crud application where we can create new sef fellow and delete the created ones.

 ![Peek 2020-04-01 23-40](https://global.discourse-cdn.com/free1/uploads/sef/original/1X/95e879efd9008adfecf25cb7be7fb7bde36a7a13.gif)  
This is file structure of the front end application.

```auto
sef-fellowship-dashboard/
├── src/
│ ├── App.css
│ ├── App.js
│ ├── App.test.js
│ ├── component
│ │ ├── AddCertificateComponent.js
│ │ └── ListCertificatesComponent.js
│ ├── index.css
│ ├── index.js
│ ├── logo.png
│ ├── logo.svg
│ ├── server
│ │ └── CertificateService.js
│ ├── serviceWorker.js
│ └── setupTests.js
├── public/
        ├── favicon.ico
        ├── index.html
        ├── logo192.png
        ├── logo512.png
        ├── manifest.json
        └── robots.txt

```

This is the database table that stores the data

```auto
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| id | varchar(50) | NO | PRI | NULL | |
| name | varchar(100) | NO | | NULL | |
| createdAt | int | YES | | NULL | |
| status | varchar(100) | NO | | NULL | |
| created_at | bigint | NO | | NULL | |
+------------+--------------+------+-----+---------+-------+
5 rows in set (0.02 sec)

```

Now what should I do to uplift the project from this state?

---

<div class="post-metadata">

**Author:** ![jaye](https://yyz2.discourse-cdn.com/free1/user_avatar/sef.discourse.group/jaye/32/810_2.png) [@jaye](https://sef.discourse.group/u/jaye)\
**Post date:** [April 6, 2020, 2:58pm UTC](https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20/7 "2020-04-06T14:58:52Z")

</div>

Well done @Gravewalker!

this is regarding the DB.

1. Why there are 2 columns to store created time? Also we can use Datetime/ Timestamp / bigint data types.
2. Since we do not have multiple status for a certificate we can remove the status column.

---

<div class="post-metadata">

**Author:** ![Gravewalker](https://yyz2.discourse-cdn.com/free1/user_avatar/sef.discourse.group/gravewalker/32/12_2.png) [@Gravewalker](https://sef.discourse.group/u/Gravewalker)\
**Post date:** [April 7, 2020, 6:40am UTC](https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20/8 "2020-04-07T06:40:37Z")

</div>

Thank you! I will do necessary amends to the code.

---

<div class="post-metadata">

**Author:** ![Gravewalker](https://yyz2.discourse-cdn.com/free1/user_avatar/sef.discourse.group/gravewalker/32/12_2.png) [@Gravewalker](https://sef.discourse.group/u/Gravewalker)\
**Post date:** [April 8, 2020, 8:09am UTC](https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20/9 "2020-04-08T08:09:06Z")

</div>

![image](https://global.discourse-cdn.com/free1/uploads/sef/original/1X/bb89ab55b9adb599fefc5946cc163a188ff6ed2e.png)  
@akshika47 This is the certificate that I designed. Any thoughts?

---

<div class="post-metadata">

**Author:** ![Minuri\_Adasuriya](https://yyz2.discourse-cdn.com/free1/user_avatar/sef.discourse.group/minuri_adasuriya/32/77_2.png) [@Minuri\_Adasuriya](https://sef.discourse.group/u/Minuri_Adasuriya)\
**Post date:** [April 9, 2020, 6:58am UTC](https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20/10 "2020-04-09T06:58:14Z")

</div>

This is a great start @Gravewalker! can we change the text as follows: [https://www.canva.com/design/DADovkEwdLg/share/preview?token=vsoRCFNU-x0uB-hQi0fQQA&role=EDITOR&utm\_content=DADovkEwdLg&utm\_campaign=designshare&utm\_medium=link&utm\_source=sharebutton](https://www.canva.com/design/DADovkEwdLg/share/preview?token=vsoRCFNU-x0uB-hQi0fQQA&role=EDITOR&utm_content=DADovkEwdLg&utm_campaign=designshare&utm_medium=link&utm_source=sharebutton)

Also, with the image can we get it to have more of an ‘award’ feel? the imagery right now makes it look like a generic webpage.

---

<div class="post-metadata">

**Author:** ![Gravewalker](https://yyz2.discourse-cdn.com/free1/user_avatar/sef.discourse.group/gravewalker/32/12_2.png) [@Gravewalker](https://sef.discourse.group/u/Gravewalker)\
**Post date:** [April 9, 2020, 7:09am UTC](https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20/11 "2020-04-09T07:09:04Z")

</div>

Okay. Sure! On it. 😀 😀 😀

---

<div class="post-metadata">

**Author:** ![Gravewalker](https://yyz2.discourse-cdn.com/free1/user_avatar/sef.discourse.group/gravewalker/32/12_2.png) [@Gravewalker](https://sef.discourse.group/u/Gravewalker)\
**Post date:** [April 9, 2020, 1:19pm UTC](https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20/12 "2020-04-09T13:19:39Z")

</div>

@Minuri_Adasuriya How about now?

 ![image](https://global.discourse-cdn.com/free1/uploads/sef/original/1X/e4b2d8268592b0008939c3ccc3f49a3c172e2f3d.jpeg)

---

<div class="post-metadata">

**Author:** ![jaye](https://yyz2.discourse-cdn.com/free1/user_avatar/sef.discourse.group/jaye/32/810_2.png) [@jaye](https://sef.discourse.group/u/jaye)\
**Post date:** [April 9, 2020, 2:15pm UTC](https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20/13 "2020-04-09T14:15:43Z")

</div>

Cool! +1 from me.

It would be nice if we can get the a4 ratio (1:1.4).

---

<div class="post-metadata">

**Author:** ![Gravewalker](https://yyz2.discourse-cdn.com/free1/user_avatar/sef.discourse.group/gravewalker/32/12_2.png) [@Gravewalker](https://sef.discourse.group/u/Gravewalker)\
**Post date:** [April 9, 2020, 2:17pm UTC](https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20/14 "2020-04-09T14:17:53Z")

</div>

Actually this is dynamic. It changes with the screen size.  
This is the mobile view.

 ![image](https://global.discourse-cdn.com/free1/uploads/sef/original/1X/af898e74e47b7d281d301209ebca454925aa8476.png)

---

<div class="post-metadata">

**Author:** ![Gravewalker](https://yyz2.discourse-cdn.com/free1/user_avatar/sef.discourse.group/gravewalker/32/12_2.png) [@Gravewalker](https://sef.discourse.group/u/Gravewalker)\
**Post date:** [April 9, 2020, 2:18pm UTC](https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20/15 "2020-04-09T14:18:42Z")

</div>

[http://localhost:9000/fellowship/?id=5](http://localhost:9000/fellowship/?id=5)  
This is how the link comes.

---

<div class="post-metadata">

**Author:** ![Minuri\_Adasuriya](https://yyz2.discourse-cdn.com/free1/user_avatar/sef.discourse.group/minuri_adasuriya/32/77_2.png) [@Minuri\_Adasuriya](https://sef.discourse.group/u/Minuri_Adasuriya)\
**Post date:** [April 10, 2020, 11:47am UTC](https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20/16 "2020-04-10T11:47:53Z")

</div>

This looks great @Gravewalker

---

<div class="post-metadata">

**Author:** ![Gravewalker](https://yyz2.discourse-cdn.com/free1/user_avatar/sef.discourse.group/gravewalker/32/12_2.png) [@Gravewalker](https://sef.discourse.group/u/Gravewalker)\
**Post date:** [May 13, 2020, 8:11pm UTC](https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20/17 "2020-05-13T20:11:36Z")

</div>

> <https://github.com/sef-global/sef-core/pull/26/>

  
I implemented the API to create, list, delete certificates.

---

<div class="post-metadata">

**Author:** ![Gravewalker](https://yyz2.discourse-cdn.com/free1/user_avatar/sef.discourse.group/gravewalker/32/12_2.png) [@Gravewalker](https://sef.discourse.group/u/Gravewalker)\
**Post date:** [May 16, 2020, 2:01pm UTC](https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20/18 "2020-05-16T14:01:06Z")

</div>

These are the stuff that we talked on the first code reveiw,

- Use audit model instead of using a specific column for the date attribute.
- Change the 500 response to Bad request response on the Id not found exception on delete certificate endpoint.
- Add java doc comments on endpoint methods.
- Implement the same functions with a new architecture using Controller, Service, DAO and, Repository.

---

<div class="post-metadata">

**Author:** ![Gravewalker](https://yyz2.discourse-cdn.com/free1/user_avatar/sef.discourse.group/gravewalker/32/12_2.png) [@Gravewalker](https://sef.discourse.group/u/Gravewalker)\
**Post date:** [June 13, 2020, 4:23pm UTC](https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20/19 "2020-06-13T16:23:43Z")

</div>

Updated the `get certificates` endpoint to return a page as the payload.

> <https://github.com/sef-global/sef-core/pull/50>

---

<div class="post-metadata">

**Author:** ![Minuri\_Adasuriya](https://yyz2.discourse-cdn.com/free1/user_avatar/sef.discourse.group/minuri_adasuriya/32/77_2.png) [@Minuri\_Adasuriya](https://sef.discourse.group/u/Minuri_Adasuriya)\
**Post date:** [August 9, 2020, 6:51am UTC](https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20/20 "2020-08-09T06:51:42Z")

</div>

Hi @Gravewalker is this done now? 🙂 let me know if we can start using this feature. It will be an awesome project to close off and let our followers know about and start issuing the digital certificates to our volunteer speakers and supporters.

---

<div class="post-metadata">

**Author:** ![Gravewalker](https://yyz2.discourse-cdn.com/free1/user_avatar/sef.discourse.group/gravewalker/32/12_2.png) [@Gravewalker](https://sef.discourse.group/u/Gravewalker)\
**Post date:** [August 10, 2020, 7:03am UTC](https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20/21 "2020-08-10T07:03:39Z")

</div>

We had a discussion on this project in our tech team standup. We already have the backend developed in the same place where we have our academix backend (`sef-core`). Plan is to let you guys give the functionality to create certificates in the same dashboard. We were all fixated on the other projects and couldn’t look into this past few weeks.  
We defined the next steps on this project in our last meeting you can find it here,

> [@Dev Team Weekly StandUps 2020](https://sef.discourse.group/t/tech-team-weekly-standups-2020/112/15):
>
> Updates for the week 2020-07-31T18:30:00Z (UTC) → 2020-08-07T18:30:00Z (UTC) Attendees: @jaye @Gravewalker @piumal1999 @miluckshan-j @anjisvj @YohanAvishke @Gimhan_minionAcademiX dashboard Started on implementing the adding translations via the dashboard Created the dummy UIs Worked on rewriting APIs next steps : Amending the database from using a table to using enums for languages Finishing up the UI views for all the edit and add forms ScholarX Finalised the class diagram Changed th…

It might take a bit of time only because we are simultaneously working on the scholarx platform but I think we can deliver this within a two-week span.

[Next page](https://sef.discourse.group/t/developing-an-admin-platform-for-sef-fellowship-program/20.md?page=2)
