@ -13,7 +13,7 @@ This project consists in creating a web forum that allows :
In order to store the data in your forum (like users, posts, comments, etc.) you will use the database library SQLite.
In order to store the data in your forum (like users, posts, comments, etc.) you will use the database library SQLite.
SQLite is a popular choice as embedded database software for local/client storage in application software such as web browsers. It enables you to create a database as well as controlling it by using queries.
SQLite is a popular choice as an embedded database software for local/client storage in application software such as web browsers. It enables you to create a database as well as controlling it by using queries.
To structure your database and to achieve better performance we highly advise you to take a look at the [entity relationship diagram](https://www.smartdraw.com/entity-relationship-diagram/) and build one based on your own database.
To structure your database and to achieve better performance we highly advise you to take a look at the [entity relationship diagram](https://www.smartdraw.com/entity-relationship-diagram/) and build one based on your own database.
@ -67,7 +67,22 @@ Note that the last two are only available for registered users and must refer to
#### Docker
#### Docker
For the forum project you must use Docker. You can see all about docker basics on the [ascii-art-web-dockerize](https://public.01-edu.org/subjects/ascii-art-web/dockerize/) subject.
For the forum project you must use Docker. You can see all about docker basics on the [ascii-art-web-dockerize](../ascii-art-web/dockerize/README.md) subject.
### Instructions
- You must use **SQLite**.
- You must handle website errors, HTTP status.
- You must handle all sort of technical errors.
- The code must respect the [**good practices**](../good-practices/README.md).
- It is recommended that the code should present a **test file**.
### Allowed packages
- All [standard Go](https://golang.org/pkg/) packages are allowed.
You must follow the same [principles](https://public.01-edu.org/subjects/forum/) as the first subject.
You must follow the same [principles](../README.md) as the first subject.
In `forum image upload`, registered users have the possibility to create a post containing an image as well as text.
In `forum image upload`, registered users have the possibility to create a post containing an image as well as text.
- When viewing the post, users and guests should see the image associated to it.
- When viewing the post, users and guests should see the image associated to it.
There are various extensions for images like: JPEG, SVG, PNG, GIF, etc. In this project you have to handle at least JPEG, PNG and GIF types.
There are several extensions for images like: JPEG, SVG, PNG, GIF, etc. In this project you have to handle at least JPEG, PNG and GIF types.
The max size of the images to load should be 20 mb. If there is an attempt to load an image greater than 20mb, an error message should inform the user that the image is too big.
The max size of the images to load should be 20 mb. If there is an attempt to load an image greater than 20mb, an error message should inform the user that the image is too big.
This project will help you learn about:
- Image manipulation
- Image types
### Hints
### Hints
- Be cautious with the size of the images.
- Be cautious with the size of the images.
@ -25,7 +20,7 @@ This project will help you learn about:
- The backend must be written in **Go**.
- The backend must be written in **Go**.
- You must handle website errors.
- You must handle website errors.
- The code must respect the [good practices](https://public.01-edu.org/subjects/good-practices/)
- The code must respect the [good practices](../../good-practices/README.md)
- It is recommended that the code should present a **test file**.
- It is recommended that the code should present a **test file**.
### Allowed packages
### Allowed packages
@ -34,3 +29,8 @@ This project will help you learn about:
You must follow the same [principles](https://public.01-edu.org/subjects/forum/) as the first subject.
You must follow the same [principles](../README.md) as the first subject.
The `forum-moderation` will be based on a moderation system. It must present a moderator that, depending on the access level of a user or the forum set-up, approves posted messages before they become publicly visible.
The `forummoderation` will be based on a moderation system. It must present a moderator that, depending on the access level of a user or the forum set-up, approves posted messages before they become publicly visible.
- The filtering can be done depending on the categories of the post being sorted by irrelevant, obscene, illegal or insulting.
- The filtering can be done depending on the categories of the post being sorted by irrelevant, obscene, illegal or insulting.
@ -32,18 +32,13 @@ You should implement at least 4 types of users :
- Promote or demote a normal user to, or from a moderator user.
- Promote or demote a normal user to, or from a moderator user.
- Receive reports from moderators. If the admin receives a report from a moderator, he can respond to that report
- Receive reports from moderators. If the admin receives a report from a moderator, he can respond to that report
- Delete posts and comments
- Delete posts and comments
- Manage the categories, by being able to creating and deleting them.
- Manage the categories, by being able to create and delete them.
This project will help you learn about :
- Moderation System
- User access levels
### Instructions
### Instructions
- You must handle website errors, HTTPS status.
- You must handle website errors, HTTPS status.
- You must handle all sort of technical errors.
- You must handle all sort of technical errors.
- The code must respect the [**good practices**](https://public.01-edu.org/subjects/good-practices/).
- The code must respect the [**good practices**](../../good-practices/README.md).
- It is recommended that the code should present a **test file**.
- It is recommended that the code should present a **test file**.
### Allowed packages
### Allowed packages
@ -52,3 +47,8 @@ This project will help you learn about :
You must follow the same [principles](https://public.01-edu.org/subjects/forum/forum.en) as the first subject.
You must follow the same [principles](../README.md) as the first subject.
For this project you must take into account the security of your forum.
For this project you must take into account the security of your forum.
- You should implement a Hypertext Transfer Protocol Secure ([HTTPS](https://www.globalsign.com/en/blog/the-difference-between-http-and-https)) protocol :
- You should implement a Hypertext Transfer Protocol Secure ([HTTPS](https://developer.mozilla.org/pt-BR/docs/Glossary/https)) protocol :
- Encrypted connection : for this you will have to generate an SSL certificate, you can think of this like a identity card for your website. You can create your certificates or use "Certificate Authorities"(CA's)
- Encrypted connection : for this you will have to generate an SSL certificate, you can think of this like a identity card for your website. You can create your certificates or use "Certificate Authorities"(CA's)
@ -18,18 +18,6 @@ For this project you must take into account the security of your forum.
- Clients passwords
- Clients passwords
- Database, for this you will have to create a password for your database.
- Database, for this you will have to create a password for your database.
@ -21,7 +21,7 @@ Beside those sections it will have a mandatory section for the generation of sta
You will have to create a profile UI where you can see your own school information. This information/data is present on the graphQL endpoint, where you will have to query it.
You will have to create a profile UI where you can see your own school information. This information/data is present on the graphQL endpoint, where you will have to query it.
For the UI it will be up to you to design it. But have in mind the principles of a [good UI](https://public.01-edu.org/subjects/good-practices/).\
For the UI it will be up to you to design it. But have in mind the principles of a [good UI](../good-practices/README.md).\
The UI will have a statistic section where you can generate graphs to see more about your journey and achievements on the school. This graphs must be done using [SVG](https://developer.mozilla.org/en-US/docs/Web/SVG). You will have to do at least **two different statistic graphs** for the data given.
The UI will have a statistic section where you can generate graphs to see more about your journey and achievements on the school. This graphs must be done using [SVG](https://developer.mozilla.org/en-US/docs/Web/SVG). You will have to do at least **two different statistic graphs** for the data given.
Using SVG you can create several [types of graphs](https://www.tutorialspoint.com/svg/graph.htm) including interactive graphs and animated graph. It will be up to you to decide what type of graphs you are going to do.
Using SVG you can create several [types of graphs](https://www.tutorialspoint.com/svg/graph.htm) including interactive graphs and animated graph. It will be up to you to decide what type of graphs you are going to do.
@ -114,8 +114,8 @@ Lets take for instance the table `user` and try to query it:
}
}
```
```
This simple query will return an array with the `id`s of the users. Imagine if you wanted the `login`,\
This simple query will return an array with the ids of the users. Imagine if you wanted the `login`,
you could just add this attribute to the query,example:
you could just add this attribute to the query like so:
```js
```js
{
{
@ -145,7 +145,7 @@ Here is another example of a query using the table `user`:
}
}
```
```
**Note** that for this query is required the introduction of variables (arguments)\
**Note** that for this query is required the introduction of variables (arguments),
so it will return just one user, the user that has the `id` equal to `6`.
so it will return just one user, the user that has the `id` equal to `6`.
@ -17,8 +17,7 @@ Here are some of the features you want to implement on your game:
- Run the game at least at **60fps** at all time
- Run the game at least at **60fps** at all time
- You must not have frame drops!
- You must not have frame drops!
- Proper use of **RequestAnimationFrame**
- Proper use of **RequestAnimationFrame**
- It is very hard to predict performances in JS. So measure performances,
- It is very hard to predict performances in JS. So measure performances to see if your code is fast. This will be tested!
to know if your code is fast. This will be tested
- Pause menu, that includes:
- Pause menu, that includes:
- Continue
- Continue
- Restart
- Restart
@ -31,7 +30,7 @@ You must not use frameworks or canvas, the game must be implemented using just p
### Instructions
### Instructions
Animation must have consistent motion, so in order to have a smooth animation (without interruptions or better named: jank animation) you must achieve a special number, [**60fps**](https://blog.algolia.com/performant-web-animations/). You can see more about performance [here](https://public.01-edu.org/subjects/good-practices/)
Animation must have consistent motion, so in order to have a smooth animation (without interruptions or better named: jank animation) you must achieve a special number, [**60fps**](https://blog.algolia.com/performant-web-animations/). You can see more about performance [here](../good-practices/README.md)
In order to play the game you must use only the keyboard. The usage of keyboard must be smooth, in other words you must not spam the key to move the player. But instead you must, for example maintain the key pressed and the player must continue to do the proper action. If the key is released the player should stop doing the action.
In order to play the game you must use only the keyboard. The usage of keyboard must be smooth, in other words you must not spam the key to move the player. But instead you must, for example maintain the key pressed and the player must continue to do the proper action. If the key is released the player should stop doing the action.
You must follow the same [principles](https://public.01-edu.org/subjects/make-your-game/README.md) as the first subject.
You must follow the same [principles](../README.md) as the first subject.
For this project you must take into account the creation of a **story mode**, a version of a computer game in which the player controls a character in a story.
For this project you must take into account the creation of a **story mode**, a version of a computer game in which the player controls a character in a story.
Running the stock exchange program with error, you can see the correct file [here](https://public.01-edu.org/subjects/stock-exchange-sim/examples/simple/simple)
Running the stock exchange program with error, you can see the correct file [here](examples/simple/simple)
```console
```console
$ cat examples/simple
$ cat examples/simple
@ -219,7 +219,7 @@ Error while parsing `:(euro:8):(material:1):10`
$
$
```
```
Running the checker program with error, you can see the correct file [here](https://public.01-edu.org/subjects/stock-exchange-sim/examples/simple/simple.log)
Running the checker program with error, you can see the correct file [here](examples/simple/simple.log)
###### Can that log file be used by the checker program?
###### Can that log file be used by the checker program?
##### Try to run the stock exchange program with the [simple](https://public.01-edu.org/subjects/stock-exchange-sim/examples/simple/simple) example, `"./stock examples/simple/simple 1"`.
##### Try to run the stock exchange program with the [simple](../examples/simple/simple) example, `"./stock examples/simple/simple 1"`.
```console
```console
$ go run . examples/simple/simple 1
$ go run . examples/simple/simple 1
@ -43,7 +43,7 @@ $
###### Does the display presents a result similar to the one above (optimizing time;client_content)?
###### Does the display presents a result similar to the one above (optimizing time;client_content)?
##### Try to run the stock exchange program with the [build](https://public.01-edu.org/subjects/stock-exchange-sim/examples/build/build) example, `"./stock examples/build/build 10"`.
##### Try to run the stock exchange program with the [build](../examples/build/build) example, `"./stock examples/build/build 10"`.
```console
```console
$ go run . examples/build/build 10
$ go run . examples/build/build 10
@ -67,7 +67,7 @@ $
###### Does the display presents a result similar to the one above (optimizing time;cabinet)?
###### Does the display presents a result similar to the one above (optimizing time;cabinet)?
##### Try to run the stock exchange program with the [seller](https://public.01-edu.org/subjects/stock-exchange-sim/examples/seller/seller) example, `"./stock examples/seller/seller 10"`.
##### Try to run the stock exchange program with the [seller](../examples/seller/seller) example, `"./stock examples/seller/seller 10"`.
```console
```console
$ go run . examples/seller/seller 10
$ go run . examples/seller/seller 10
@ -100,7 +100,7 @@ $
###### Does the display presents a result similar to the one above (optimizing euro)?
###### Does the display presents a result similar to the one above (optimizing euro)?
##### Try to run the stock exchange program with the [fertilizer](https://public.01-edu.org/subjects/stock-exchange-sim/examples/fertilizer/fertilizer) example, `"./stock examples/fertilizer/fertilizer 1"`.(fertilizer example is self-powered and rotates indefinitely)
##### Try to run the stock exchange program with the [fertilizer](../examples/fertilizer/fertilizer) example, `"./stock examples/fertilizer/fertilizer 1"`.(fertilizer example is self-powered and rotates indefinitely)
```console
```console
$ go run . examples/fertilizer/fertilizer 1
$ go run . examples/fertilizer/fertilizer 1
@ -130,7 +130,7 @@ $
###### Does the display presents a result with a significantly shorter number of cycles comparing to the previous question output?
###### Does the display presents a result with a significantly shorter number of cycles comparing to the previous question output?
##### Try to run the stock exchange program with the [error1](https://public.01-edu.org/subjects/stock-exchange-sim/examples/errors/error1) example, `"./stock examples/errors/error1 1"`.
##### Try to run the stock exchange program with the [error1](../examples/errors/error1) example, `"./stock examples/errors/error1 1"`.
```console
```console
$ go run . examples/errors/error1 1
$ go run . examples/errors/error1 1
@ -141,7 +141,7 @@ $
###### Does the display presents a result similar to the one above, where it shows the error?
###### Does the display presents a result similar to the one above, where it shows the error?
##### Try to run the stock exchange program with the [error2](https://public.01-edu.org/subjects/stock-exchange-sim/examples/errors/error2) example, `"./stock examples/errors/error2 1"`.
##### Try to run the stock exchange program with the [error2](../examples/errors/error2) example, `"./stock examples/errors/error2 1"`.
```console
```console
$ go run . examples/errors/error2 1
$ go run . examples/errors/error2 1
@ -152,7 +152,7 @@ $
###### Does the display presents a result similar to the one above, where it shows the error?
###### Does the display presents a result similar to the one above, where it shows the error?
##### Try to run the stock exchange program with the [error3](https://public.01-edu.org/subjects/stock-exchange-sim/examples/errors/error3) example, `"./stock examples/errors/error3 1"`.
##### Try to run the stock exchange program with the [error3](../examples/errors/error3) example, `"./stock examples/errors/error3 1"`.
```console
```console
$ go run . examples/errors/error3 1
$ go run . examples/errors/error3 1
@ -163,7 +163,7 @@ $
###### Does the display presents a result similar to the one above, where it shows the error?
###### Does the display presents a result similar to the one above, where it shows the error?
##### Try to run the checker program with the [build](https://public.01-edu.org/subjects/stock-exchange-sim/examples/build/build) and the [build.log](https://public.01-edu.org/subjects/stock-exchange-sim/examples/build/build.log) example, `"./checker examples/build/build examples/build/build.log"`.
##### Try to run the checker program with the [build](../examples/build/build) and the [build.log](../examples/build/build.log) example, `"./checker examples/build/build examples/build/build.log"`.
```console
```console
$ go run ./checker examples/build/build examples/build/build.log
$ go run ./checker examples/build/build examples/build/build.log
@ -180,7 +180,7 @@ $
###### Does the display presents a result similar to the one above, where it shows the last cycle and the proof that the sequence is correct?
###### Does the display presents a result similar to the one above, where it shows the last cycle and the proof that the sequence is correct?
##### Try to run the checker program with the [seller](https://public.01-edu.org/subjects/stock-exchange-sim/examples/seller/seller) and the [seller.log](https://public.01-edu.org/subjects/stock-exchange-sim/examples/seller/seller.log)example, `"./checker examples/seller/seller examples/seller/seller.log"`.
##### Try to run the checker program with the [seller](../examples/seller/seller) and the [seller.log](../examples/seller/seller.log)example, `"./checker examples/seller/seller examples/seller/seller.log"`.
```console
```console
$ go run ./checker examples/seller/seller examples/seller/seller.log
$ go run ./checker examples/seller/seller examples/seller/seller.log
@ -206,7 +206,7 @@ $
###### Does the display presents a result similar to the one above, where it shows the last cycle and the proof that the sequence is correct?
###### Does the display presents a result similar to the one above, where it shows the last cycle and the proof that the sequence is correct?
##### Try to run the checker program with the [testchecker](https://public.01-edu.org/subjects/stock-exchange-sim/examples/checkererror/testchecker) and [testchecker.log](https://public.01-edu.org/subjects/stock-exchange-sim/examples/checkererror/testchecker.log) example, `"./checker examples/checkererror/testchecker examples/checkererror/testchecker.log"`.
##### Try to run the checker program with the [testchecker](../examples/checkererror/testchecker) and [testchecker.log](../examples/checkererror/testchecker.log) example, `"./checker examples/checkererror/testchecker examples/checkererror/testchecker.log"`.
```console
```console
$ go run ./checker examples/checkererror/testchecker examples/checkererror/testchecker.log
$ go run ./checker examples/checkererror/testchecker examples/checkererror/testchecker.log
@ -228,6 +228,6 @@ $
###### +Does the project runs quickly and effectively? (Favoring recursive, no unnecessary data requests, etc)
###### +Does the project runs quickly and effectively? (Favoring recursive, no unnecessary data requests, etc)
###### +Does the code obey the [good practices](https://public.01-edu.org/subjects/good-practices/README.md)?
###### +Does the code obey the [good practices](../../good-practices/README.md)?
###### +Create your own file and run the stock exchange program with it. Does the program work like it should?
###### +Create your own file and run the stock exchange program with it. Does the program work like it should?