├── .DS_Store
├── .github
├── FUNDING.yml
└── ISSUE_TEMPLATE
│ ├── bug_report.md
│ ├── custom.md
│ └── feature_request.md
├── .gitignore
├── .mvn
└── wrapper
│ ├── MavenWrapperDownloader.java
│ ├── maven-wrapper.jar
│ └── maven-wrapper.properties
├── LICENSE
├── README.md
├── SECURITY.md
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
├── .DS_Store
├── main
├── .DS_Store
├── java
│ ├── .DS_Store
│ └── com
│ │ ├── .DS_Store
│ │ └── imagehoster
│ │ └── ImageHosterApplication
│ │ ├── ImageHosterApplication.java
│ │ ├── config
│ │ └── JpaConfigurations.java
│ │ ├── controller
│ │ ├── ImageController.java
│ │ └── UserController.java
│ │ ├── model
│ │ ├── Image.java
│ │ ├── User.java
│ │ └── UserProfile.java
│ │ ├── repository
│ │ ├── ImageRepository.java
│ │ └── UserRepository.java
│ │ └── service
│ │ ├── ImageService.java
│ │ └── UserService.java
└── resources
│ ├── .DS_Store
│ ├── META-INF
│ └── persistence.xml
│ ├── application.properties
│ ├── static
│ ├── css
│ │ ├── Upload_style.css
│ │ ├── edit_pagestyle.css
│ │ ├── index_style.css
│ │ ├── panda.css
│ │ ├── signup_style.css
│ │ └── style.css
│ ├── image
│ │ ├── Ashish.png
│ │ ├── arun_sir.png
│ │ ├── icon.png
│ │ ├── im.jpg
│ │ ├── important.jpg
│ │ ├── maini.png
│ │ ├── n.png
│ │ ├── pic1.png
│ │ ├── pic3.png
│ │ ├── rahul.png
│ │ └── tohan.png
│ └── js
│ │ ├── Upload_script.js
│ │ ├── edit_pagescript.js
│ │ ├── index_style.js
│ │ ├── login1.js
│ │ ├── script.js
│ │ └── signup_script.js
│ └── templates
│ ├── Edit_Page
│ └── edit_page.html
│ ├── Login
│ └── login_page.html
│ ├── Print
│ └── print.html
│ ├── Signup
│ └── signup.html
│ ├── Upload
│ └── Upload.html
│ ├── index.html
│ ├── layout.html
│ └── users
│ └── registration.html
└── test
└── java
└── com
└── imagehoster
└── ImageHosterApplication
└── ImageHosterApplicationTests.java
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ashish2030/Image-Hosting-Application-Using-Spring-Boot-Technology/2027d3e91ce8943b82e0035a4c07f810efeb1b6d/.DS_Store
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | custom: ["https://paypal.me/ashish2030",
13 | "https://www.buymeacoffee.com/ashish2030"]
14 | # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
15 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Screenshots**
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | **Desktop (please complete the following information):**
27 | - OS: [e.g. iOS]
28 | - Browser [e.g. chrome, safari]
29 | - Version [e.g. 22]
30 |
31 | **Smartphone (please complete the following information):**
32 | - Device: [e.g. iPhone6]
33 | - OS: [e.g. iOS8.1]
34 | - Browser [e.g. stock browser, safari]
35 | - Version [e.g. 22]
36 |
37 | **Additional context**
38 | Add any other context about the problem here.
39 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/custom.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Custom issue template
3 | about: Describe this issue template's purpose here.
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**/target/
5 | !**/src/test/**/target/
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 | !**/src/main/**/build/
30 | !**/src/test/**/build/
31 |
32 | ### VS Code ###
33 | .vscode/
34 |
--------------------------------------------------------------------------------
/.mvn/wrapper/MavenWrapperDownloader.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2007-present the original author or authors.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * https://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | import java.net.*;
17 | import java.io.*;
18 | import java.nio.channels.*;
19 | import java.util.Properties;
20 |
21 | public class MavenWrapperDownloader {
22 |
23 | private static final String WRAPPER_VERSION = "0.5.6";
24 | /**
25 | * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
26 | */
27 | private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
28 | + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
29 |
30 | /**
31 | * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
32 | * use instead of the default one.
33 | */
34 | private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
35 | ".mvn/wrapper/maven-wrapper.properties";
36 |
37 | /**
38 | * Path where the maven-wrapper.jar will be saved to.
39 | */
40 | private static final String MAVEN_WRAPPER_JAR_PATH =
41 | ".mvn/wrapper/maven-wrapper.jar";
42 |
43 | /**
44 | * Name of the property which should be used to override the default download url for the wrapper.
45 | */
46 | private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
47 |
48 | public static void main(String args[]) {
49 | System.out.println("- Downloader started");
50 | File baseDirectory = new File(args[0]);
51 | System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
52 |
53 | // If the maven-wrapper.properties exists, read it and check if it contains a custom
54 | // wrapperUrl parameter.
55 | File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
56 | String url = DEFAULT_DOWNLOAD_URL;
57 | if(mavenWrapperPropertyFile.exists()) {
58 | FileInputStream mavenWrapperPropertyFileInputStream = null;
59 | try {
60 | mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
61 | Properties mavenWrapperProperties = new Properties();
62 | mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
63 | url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
64 | } catch (IOException e) {
65 | System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
66 | } finally {
67 | try {
68 | if(mavenWrapperPropertyFileInputStream != null) {
69 | mavenWrapperPropertyFileInputStream.close();
70 | }
71 | } catch (IOException e) {
72 | // Ignore ...
73 | }
74 | }
75 | }
76 | System.out.println("- Downloading from: " + url);
77 |
78 | File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
79 | if(!outputFile.getParentFile().exists()) {
80 | if(!outputFile.getParentFile().mkdirs()) {
81 | System.out.println(
82 | "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
83 | }
84 | }
85 | System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
86 | try {
87 | downloadFileFromURL(url, outputFile);
88 | System.out.println("Done");
89 | System.exit(0);
90 | } catch (Throwable e) {
91 | System.out.println("- Error downloading");
92 | e.printStackTrace();
93 | System.exit(1);
94 | }
95 | }
96 |
97 | private static void downloadFileFromURL(String urlString, File destination) throws Exception {
98 | if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
99 | String username = System.getenv("MVNW_USERNAME");
100 | char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
101 | Authenticator.setDefault(new Authenticator() {
102 | @Override
103 | protected PasswordAuthentication getPasswordAuthentication() {
104 | return new PasswordAuthentication(username, password);
105 | }
106 | });
107 | }
108 | URL website = new URL(urlString);
109 | ReadableByteChannel rbc;
110 | rbc = Channels.newChannel(website.openStream());
111 | FileOutputStream fos = new FileOutputStream(destination);
112 | fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
113 | fos.close();
114 | rbc.close();
115 | }
116 |
117 | }
118 |
--------------------------------------------------------------------------------
/.mvn/wrapper/maven-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ashish2030/Image-Hosting-Application-Using-Spring-Boot-Technology/2027d3e91ce8943b82e0035a4c07f810efeb1b6d/.mvn/wrapper/maven-wrapper.jar
--------------------------------------------------------------------------------
/.mvn/wrapper/maven-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
3 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Ashish Kumar
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
𝐈𝐦𝐚𝐠𝐞-𝐇𝐨𝐬𝐭𝐞𝐫-𝐀𝐩𝐩𝐥𝐢𝐜𝐚𝐭𝐢𝐨𝐧
2 |
3 | :octocat:🌟 ᴛʜɪꜱ ɪꜱ ᴍʏ ɪᴍᴀɢᴇ ʜᴏꜱᴛɪɴɢ ᴀᴘᴘʟɪᴄᴀᴛɪᴏɴ ᴡʜᴇʀᴇ ʏᴏᴜ ᴄᴀɴ ᴜᴘʟᴏᴀᴅ ʏᴏᴜʀ ᴘɪᴄᴛᴜʀᴇꜱ ꜱᴀꜰᴇʟʏ 💻 🎯🚀
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | [](https://github.com/ashish2030/EmailSender-Rest-API-Backend-Of-frontend-Using-javascript/commits/master)
21 | [](https://github.com/ashish2030/EmailSender-Rest-API-Backend-Of-frontend-Using-javascript/archive/master.zip)
22 |
23 | https://user-images.githubusercontent.com/61516051/117404816-39e82580-af28-11eb-8165-a6ad8d4fe428.mp4
24 |
25 |
26 |
27 | View Demo
28 | ·
29 | Report Bug
30 | ·
31 | Request Feature
32 |
33 |
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 | # Security Policy
2 |
3 | ## Supported Versions
4 |
5 | Use this section to tell people about which versions of your project are
6 | currently being supported with security updates.
7 |
8 | | Version | Supported |
9 | | ------- | ------------------ |
10 | | 5.1.x | :white_check_mark: |
11 | | 5.0.x | :x: |
12 | | 4.0.x | :white_check_mark: |
13 | | < 4.0 | :x: |
14 |
15 | ## Reporting a Vulnerability
16 |
17 | Use this section to tell people how to report a vulnerability.
18 |
19 | Tell them where to go, how often they can expect to get an update on a
20 | reported vulnerability, what to expect if the vulnerability is accepted or
21 | declined, etc.
22 |
--------------------------------------------------------------------------------
/mvnw:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # ----------------------------------------------------------------------------
3 | # Licensed to the Apache Software Foundation (ASF) under one
4 | # or more contributor license agreements. See the NOTICE file
5 | # distributed with this work for additional information
6 | # regarding copyright ownership. The ASF licenses this file
7 | # to you under the Apache License, Version 2.0 (the
8 | # "License"); you may not use this file except in compliance
9 | # with the License. You may obtain a copy of the License at
10 | #
11 | # https://www.apache.org/licenses/LICENSE-2.0
12 | #
13 | # Unless required by applicable law or agreed to in writing,
14 | # software distributed under the License is distributed on an
15 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 | # KIND, either express or implied. See the License for the
17 | # specific language governing permissions and limitations
18 | # under the License.
19 | # ----------------------------------------------------------------------------
20 |
21 | # ----------------------------------------------------------------------------
22 | # Maven Start Up Batch script
23 | #
24 | # Required ENV vars:
25 | # ------------------
26 | # JAVA_HOME - location of a JDK home dir
27 | #
28 | # Optional ENV vars
29 | # -----------------
30 | # M2_HOME - location of maven2's installed home dir
31 | # MAVEN_OPTS - parameters passed to the Java VM when running Maven
32 | # e.g. to debug Maven itself, use
33 | # set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
34 | # MAVEN_SKIP_RC - flag to disable loading of mavenrc files
35 | # ----------------------------------------------------------------------------
36 |
37 | if [ -z "$MAVEN_SKIP_RC" ] ; then
38 |
39 | if [ -f /etc/mavenrc ] ; then
40 | . /etc/mavenrc
41 | fi
42 |
43 | if [ -f "$HOME/.mavenrc" ] ; then
44 | . "$HOME/.mavenrc"
45 | fi
46 |
47 | fi
48 |
49 | # OS specific support. $var _must_ be set to either true or false.
50 | cygwin=false;
51 | darwin=false;
52 | mingw=false
53 | case "`uname`" in
54 | CYGWIN*) cygwin=true ;;
55 | MINGW*) mingw=true;;
56 | Darwin*) darwin=true
57 | # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
58 | # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
59 | if [ -z "$JAVA_HOME" ]; then
60 | if [ -x "/usr/libexec/java_home" ]; then
61 | export JAVA_HOME="`/usr/libexec/java_home`"
62 | else
63 | export JAVA_HOME="/Library/Java/Home"
64 | fi
65 | fi
66 | ;;
67 | esac
68 |
69 | if [ -z "$JAVA_HOME" ] ; then
70 | if [ -r /etc/gentoo-release ] ; then
71 | JAVA_HOME=`java-config --jre-home`
72 | fi
73 | fi
74 |
75 | if [ -z "$M2_HOME" ] ; then
76 | ## resolve links - $0 may be a link to maven's home
77 | PRG="$0"
78 |
79 | # need this for relative symlinks
80 | while [ -h "$PRG" ] ; do
81 | ls=`ls -ld "$PRG"`
82 | link=`expr "$ls" : '.*-> \(.*\)$'`
83 | if expr "$link" : '/.*' > /dev/null; then
84 | PRG="$link"
85 | else
86 | PRG="`dirname "$PRG"`/$link"
87 | fi
88 | done
89 |
90 | saveddir=`pwd`
91 |
92 | M2_HOME=`dirname "$PRG"`/..
93 |
94 | # make it fully qualified
95 | M2_HOME=`cd "$M2_HOME" && pwd`
96 |
97 | cd "$saveddir"
98 | # echo Using m2 at $M2_HOME
99 | fi
100 |
101 | # For Cygwin, ensure paths are in UNIX format before anything is touched
102 | if $cygwin ; then
103 | [ -n "$M2_HOME" ] &&
104 | M2_HOME=`cygpath --unix "$M2_HOME"`
105 | [ -n "$JAVA_HOME" ] &&
106 | JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
107 | [ -n "$CLASSPATH" ] &&
108 | CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
109 | fi
110 |
111 | # For Mingw, ensure paths are in UNIX format before anything is touched
112 | if $mingw ; then
113 | [ -n "$M2_HOME" ] &&
114 | M2_HOME="`(cd "$M2_HOME"; pwd)`"
115 | [ -n "$JAVA_HOME" ] &&
116 | JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
117 | fi
118 |
119 | if [ -z "$JAVA_HOME" ]; then
120 | javaExecutable="`which javac`"
121 | if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
122 | # readlink(1) is not available as standard on Solaris 10.
123 | readLink=`which readlink`
124 | if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
125 | if $darwin ; then
126 | javaHome="`dirname \"$javaExecutable\"`"
127 | javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
128 | else
129 | javaExecutable="`readlink -f \"$javaExecutable\"`"
130 | fi
131 | javaHome="`dirname \"$javaExecutable\"`"
132 | javaHome=`expr "$javaHome" : '\(.*\)/bin'`
133 | JAVA_HOME="$javaHome"
134 | export JAVA_HOME
135 | fi
136 | fi
137 | fi
138 |
139 | if [ -z "$JAVACMD" ] ; then
140 | if [ -n "$JAVA_HOME" ] ; then
141 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
142 | # IBM's JDK on AIX uses strange locations for the executables
143 | JAVACMD="$JAVA_HOME/jre/sh/java"
144 | else
145 | JAVACMD="$JAVA_HOME/bin/java"
146 | fi
147 | else
148 | JAVACMD="`which java`"
149 | fi
150 | fi
151 |
152 | if [ ! -x "$JAVACMD" ] ; then
153 | echo "Error: JAVA_HOME is not defined correctly." >&2
154 | echo " We cannot execute $JAVACMD" >&2
155 | exit 1
156 | fi
157 |
158 | if [ -z "$JAVA_HOME" ] ; then
159 | echo "Warning: JAVA_HOME environment variable is not set."
160 | fi
161 |
162 | CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
163 |
164 | # traverses directory structure from process work directory to filesystem root
165 | # first directory with .mvn subdirectory is considered project base directory
166 | find_maven_basedir() {
167 |
168 | if [ -z "$1" ]
169 | then
170 | echo "Path not specified to find_maven_basedir"
171 | return 1
172 | fi
173 |
174 | basedir="$1"
175 | wdir="$1"
176 | while [ "$wdir" != '/' ] ; do
177 | if [ -d "$wdir"/.mvn ] ; then
178 | basedir=$wdir
179 | break
180 | fi
181 | # workaround for JBEAP-8937 (on Solaris 10/Sparc)
182 | if [ -d "${wdir}" ]; then
183 | wdir=`cd "$wdir/.."; pwd`
184 | fi
185 | # end of workaround
186 | done
187 | echo "${basedir}"
188 | }
189 |
190 | # concatenates all lines of a file
191 | concat_lines() {
192 | if [ -f "$1" ]; then
193 | echo "$(tr -s '\n' ' ' < "$1")"
194 | fi
195 | }
196 |
197 | BASE_DIR=`find_maven_basedir "$(pwd)"`
198 | if [ -z "$BASE_DIR" ]; then
199 | exit 1;
200 | fi
201 |
202 | ##########################################################################################
203 | # Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
204 | # This allows using the maven wrapper in projects that prohibit checking in binary data.
205 | ##########################################################################################
206 | if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
207 | if [ "$MVNW_VERBOSE" = true ]; then
208 | echo "Found .mvn/wrapper/maven-wrapper.jar"
209 | fi
210 | else
211 | if [ "$MVNW_VERBOSE" = true ]; then
212 | echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
213 | fi
214 | if [ -n "$MVNW_REPOURL" ]; then
215 | jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
216 | else
217 | jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
218 | fi
219 | while IFS="=" read key value; do
220 | case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
221 | esac
222 | done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
223 | if [ "$MVNW_VERBOSE" = true ]; then
224 | echo "Downloading from: $jarUrl"
225 | fi
226 | wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
227 | if $cygwin; then
228 | wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
229 | fi
230 |
231 | if command -v wget > /dev/null; then
232 | if [ "$MVNW_VERBOSE" = true ]; then
233 | echo "Found wget ... using wget"
234 | fi
235 | if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
236 | wget "$jarUrl" -O "$wrapperJarPath"
237 | else
238 | wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
239 | fi
240 | elif command -v curl > /dev/null; then
241 | if [ "$MVNW_VERBOSE" = true ]; then
242 | echo "Found curl ... using curl"
243 | fi
244 | if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
245 | curl -o "$wrapperJarPath" "$jarUrl" -f
246 | else
247 | curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
248 | fi
249 |
250 | else
251 | if [ "$MVNW_VERBOSE" = true ]; then
252 | echo "Falling back to using Java to download"
253 | fi
254 | javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
255 | # For Cygwin, switch paths to Windows format before running javac
256 | if $cygwin; then
257 | javaClass=`cygpath --path --windows "$javaClass"`
258 | fi
259 | if [ -e "$javaClass" ]; then
260 | if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
261 | if [ "$MVNW_VERBOSE" = true ]; then
262 | echo " - Compiling MavenWrapperDownloader.java ..."
263 | fi
264 | # Compiling the Java class
265 | ("$JAVA_HOME/bin/javac" "$javaClass")
266 | fi
267 | if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
268 | # Running the downloader
269 | if [ "$MVNW_VERBOSE" = true ]; then
270 | echo " - Running MavenWrapperDownloader.java ..."
271 | fi
272 | ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
273 | fi
274 | fi
275 | fi
276 | fi
277 | ##########################################################################################
278 | # End of extension
279 | ##########################################################################################
280 |
281 | export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
282 | if [ "$MVNW_VERBOSE" = true ]; then
283 | echo $MAVEN_PROJECTBASEDIR
284 | fi
285 | MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
286 |
287 | # For Cygwin, switch paths to Windows format before running java
288 | if $cygwin; then
289 | [ -n "$M2_HOME" ] &&
290 | M2_HOME=`cygpath --path --windows "$M2_HOME"`
291 | [ -n "$JAVA_HOME" ] &&
292 | JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
293 | [ -n "$CLASSPATH" ] &&
294 | CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
295 | [ -n "$MAVEN_PROJECTBASEDIR" ] &&
296 | MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
297 | fi
298 |
299 | # Provide a "standardized" way to retrieve the CLI args that will
300 | # work with both Windows and non-Windows executions.
301 | MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
302 | export MAVEN_CMD_LINE_ARGS
303 |
304 | WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
305 |
306 | exec "$JAVACMD" \
307 | $MAVEN_OPTS \
308 | -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
309 | "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
310 | ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
311 |
--------------------------------------------------------------------------------
/mvnw.cmd:
--------------------------------------------------------------------------------
1 | @REM ----------------------------------------------------------------------------
2 | @REM Licensed to the Apache Software Foundation (ASF) under one
3 | @REM or more contributor license agreements. See the NOTICE file
4 | @REM distributed with this work for additional information
5 | @REM regarding copyright ownership. The ASF licenses this file
6 | @REM to you under the Apache License, Version 2.0 (the
7 | @REM "License"); you may not use this file except in compliance
8 | @REM with the License. You may obtain a copy of the License at
9 | @REM
10 | @REM https://www.apache.org/licenses/LICENSE-2.0
11 | @REM
12 | @REM Unless required by applicable law or agreed to in writing,
13 | @REM software distributed under the License is distributed on an
14 | @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 | @REM KIND, either express or implied. See the License for the
16 | @REM specific language governing permissions and limitations
17 | @REM under the License.
18 | @REM ----------------------------------------------------------------------------
19 |
20 | @REM ----------------------------------------------------------------------------
21 | @REM Maven Start Up Batch script
22 | @REM
23 | @REM Required ENV vars:
24 | @REM JAVA_HOME - location of a JDK home dir
25 | @REM
26 | @REM Optional ENV vars
27 | @REM M2_HOME - location of maven2's installed home dir
28 | @REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
29 | @REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
30 | @REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
31 | @REM e.g. to debug Maven itself, use
32 | @REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
33 | @REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
34 | @REM ----------------------------------------------------------------------------
35 |
36 | @REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
37 | @echo off
38 | @REM set title of command window
39 | title %0
40 | @REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
41 | @if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
42 |
43 | @REM set %HOME% to equivalent of $HOME
44 | if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
45 |
46 | @REM Execute a user defined script before this one
47 | if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
48 | @REM check for pre script, once with legacy .bat ending and once with .cmd ending
49 | if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
50 | if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
51 | :skipRcPre
52 |
53 | @setlocal
54 |
55 | set ERROR_CODE=0
56 |
57 | @REM To isolate internal variables from possible post scripts, we use another setlocal
58 | @setlocal
59 |
60 | @REM ==== START VALIDATION ====
61 | if not "%JAVA_HOME%" == "" goto OkJHome
62 |
63 | echo.
64 | echo Error: JAVA_HOME not found in your environment. >&2
65 | echo Please set the JAVA_HOME variable in your environment to match the >&2
66 | echo location of your Java installation. >&2
67 | echo.
68 | goto error
69 |
70 | :OkJHome
71 | if exist "%JAVA_HOME%\bin\java.exe" goto init
72 |
73 | echo.
74 | echo Error: JAVA_HOME is set to an invalid directory. >&2
75 | echo JAVA_HOME = "%JAVA_HOME%" >&2
76 | echo Please set the JAVA_HOME variable in your environment to match the >&2
77 | echo location of your Java installation. >&2
78 | echo.
79 | goto error
80 |
81 | @REM ==== END VALIDATION ====
82 |
83 | :init
84 |
85 | @REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
86 | @REM Fallback to current working directory if not found.
87 |
88 | set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
89 | IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
90 |
91 | set EXEC_DIR=%CD%
92 | set WDIR=%EXEC_DIR%
93 | :findBaseDir
94 | IF EXIST "%WDIR%"\.mvn goto baseDirFound
95 | cd ..
96 | IF "%WDIR%"=="%CD%" goto baseDirNotFound
97 | set WDIR=%CD%
98 | goto findBaseDir
99 |
100 | :baseDirFound
101 | set MAVEN_PROJECTBASEDIR=%WDIR%
102 | cd "%EXEC_DIR%"
103 | goto endDetectBaseDir
104 |
105 | :baseDirNotFound
106 | set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
107 | cd "%EXEC_DIR%"
108 |
109 | :endDetectBaseDir
110 |
111 | IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
112 |
113 | @setlocal EnableExtensions EnableDelayedExpansion
114 | for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
115 | @endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
116 |
117 | :endReadAdditionalConfig
118 |
119 | SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
120 | set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
121 | set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
122 |
123 | set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
124 |
125 | FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
126 | IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
127 | )
128 |
129 | @REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
130 | @REM This allows using the maven wrapper in projects that prohibit checking in binary data.
131 | if exist %WRAPPER_JAR% (
132 | if "%MVNW_VERBOSE%" == "true" (
133 | echo Found %WRAPPER_JAR%
134 | )
135 | ) else (
136 | if not "%MVNW_REPOURL%" == "" (
137 | SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
138 | )
139 | if "%MVNW_VERBOSE%" == "true" (
140 | echo Couldn't find %WRAPPER_JAR%, downloading it ...
141 | echo Downloading from: %DOWNLOAD_URL%
142 | )
143 |
144 | powershell -Command "&{"^
145 | "$webclient = new-object System.Net.WebClient;"^
146 | "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
147 | "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
148 | "}"^
149 | "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
150 | "}"
151 | if "%MVNW_VERBOSE%" == "true" (
152 | echo Finished downloading %WRAPPER_JAR%
153 | )
154 | )
155 | @REM End of extension
156 |
157 | @REM Provide a "standardized" way to retrieve the CLI args that will
158 | @REM work with both Windows and non-Windows executions.
159 | set MAVEN_CMD_LINE_ARGS=%*
160 |
161 | %MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
162 | if ERRORLEVEL 1 goto error
163 | goto end
164 |
165 | :error
166 | set ERROR_CODE=1
167 |
168 | :end
169 | @endlocal & set ERROR_CODE=%ERROR_CODE%
170 |
171 | if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
172 | @REM check for post script, once with legacy .bat ending and once with .cmd ending
173 | if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
174 | if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
175 | :skipRcPost
176 |
177 | @REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
178 | if "%MAVEN_BATCH_PAUSE%" == "on" pause
179 |
180 | if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
181 |
182 | exit /B %ERROR_CODE%
183 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 |
6 | org.springframework.boot
7 | spring-boot-starter-parent
8 | 2.4.2
9 |
10 |
11 | com.upgrad
12 | TechnicalBlogApplication
13 | 0.0.1-SNAPSHOT
14 | TechnicalBlogApplication
15 | Demo project for Spring Boot
16 |
17 | 1.8
18 |
19 |
20 |
21 | org.springframework.boot
22 | spring-boot-starter-thymeleaf
23 |
24 |
25 | org.springframework.boot
26 | spring-boot-starter-web
27 |
28 |
29 | commons-io
30 | commons-io
31 | 2.8.0
32 |
33 |
34 |
35 | org.postgresql
36 | postgresql
37 | 42.2.18
38 |
39 |
40 |
41 | org.springframework.boot
42 | spring-boot-starter-data-jpa
43 | 2.4.1
44 |
45 |
46 |
47 | org.springframework.boot
48 | spring-boot-starter-test
49 | test
50 |
51 |
52 |
53 |
54 |
55 |
56 | org.springframework.boot
57 | spring-boot-maven-plugin
58 |
59 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/src/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ashish2030/Image-Hosting-Application-Using-Spring-Boot-Technology/2027d3e91ce8943b82e0035a4c07f810efeb1b6d/src/.DS_Store
--------------------------------------------------------------------------------
/src/main/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ashish2030/Image-Hosting-Application-Using-Spring-Boot-Technology/2027d3e91ce8943b82e0035a4c07f810efeb1b6d/src/main/.DS_Store
--------------------------------------------------------------------------------
/src/main/java/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ashish2030/Image-Hosting-Application-Using-Spring-Boot-Technology/2027d3e91ce8943b82e0035a4c07f810efeb1b6d/src/main/java/.DS_Store
--------------------------------------------------------------------------------
/src/main/java/com/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ashish2030/Image-Hosting-Application-Using-Spring-Boot-Technology/2027d3e91ce8943b82e0035a4c07f810efeb1b6d/src/main/java/com/.DS_Store
--------------------------------------------------------------------------------
/src/main/java/com/imagehoster/ImageHosterApplication/ImageHosterApplication.java:
--------------------------------------------------------------------------------
1 | package com.imagehoster.ImageHosterApplication;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 |
6 | @SpringBootApplication
7 | public class ImageHosterApplication {
8 |
9 | public static void main(String[] args) {
10 | SpringApplication.run(ImageHosterApplication.class, args);
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/com/imagehoster/ImageHosterApplication/config/JpaConfigurations.java:
--------------------------------------------------------------------------------
1 | package com.imagehoster.ImageHosterApplication.config;
2 | import org.springframework.context.annotation.Bean;
3 | import org.springframework.context.annotation.Configuration;
4 | import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
5 |
6 | import javax.persistence.EntityManagerFactory;
7 |
8 | @Configuration
9 | public class JpaConfigurations {
10 |
11 | @Bean
12 | public EntityManagerFactory entityManagerFactory() {
13 | LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
14 | entityManagerFactoryBean.setPersistenceXmlLocation("classpath:META-INF/persistence.xml");
15 | entityManagerFactoryBean.afterPropertiesSet();
16 | return entityManagerFactoryBean.getObject();
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/com/imagehoster/ImageHosterApplication/controller/ImageController.java:
--------------------------------------------------------------------------------
1 | package com.imagehoster.ImageHosterApplication.controller;
2 | import com.imagehoster.ImageHosterApplication.model.Image;
3 | import com.imagehoster.ImageHosterApplication.model.User;
4 | import com.imagehoster.ImageHosterApplication.service.ImageService;
5 | import org.springframework.beans.factory.annotation.Autowired;
6 | import org.springframework.stereotype.Controller;
7 | import org.springframework.ui.Model;
8 | import org.springframework.web.bind.annotation.RequestMapping;
9 | import org.springframework.web.bind.annotation.RequestMethod;
10 | import org.springframework.web.bind.annotation.RequestParam;
11 | import org.springframework.web.multipart.MultipartFile;
12 | import javax.servlet.http.HttpSession;
13 | import java.util.*;
14 | @Controller
15 | public class ImageController
16 | {
17 | @Autowired
18 | private ImageService image;
19 | @RequestMapping(method = RequestMethod.GET, value = "print_page")
20 | public String getUserPost(Model model,HttpSession session)
21 | {
22 | User user=(User)session.getAttribute("LoggedUser");
23 | List image1 = image.getAllPost(user);
24 | model.addAttribute("images", image1);
25 | return "Print/print";
26 | }
27 |
28 |
29 | @RequestMapping(value="/")
30 | public String temp()
31 | {
32 | return "index";
33 | }
34 | @RequestMapping(method = RequestMethod.GET, value = "/users/upload")
35 | public String newImage()
36 | {
37 | return "Upload/Upload";
38 | }
39 | @RequestMapping(method = RequestMethod.POST, value = "/upload_Successful")
40 | public String createNewImage( @RequestParam ("file") MultipartFile file, Image newPost, HttpSession session)
41 | {
42 | User user=(User)session.getAttribute("LoggedUser");
43 | newPost.setUser(user);
44 | newPost.setDate(new Date());
45 | image.createPost(newPost,file);
46 | return "redirect:/print_page";
47 | }
48 | @RequestMapping(method = RequestMethod.POST, value = "/editpost")
49 | public String editPost( @RequestParam (name="postId") Integer postId,Model model)
50 | {
51 | Image image1=image.getImage(postId);
52 | model.addAttribute("post",image1);
53 | return "Edit_Page/edit_page";
54 | }
55 | @RequestMapping(method = RequestMethod.PUT, value = "/editpost_successful")
56 | public String editPostSubmit(@RequestParam (name="postId" ) Integer postId ,@RequestParam ("file") MultipartFile file,Image updateImgData,HttpSession session)
57 | {
58 | updateImgData.setId(postId);
59 | updateImgData.setDate((new Date()));
60 | User user=(User)session.getAttribute("LoggedUser");
61 | updateImgData.setUser(user);
62 | image.updatePost(updateImgData,file);
63 | return "redirect:/print_page";
64 | }
65 |
66 | @RequestMapping(method = RequestMethod.DELETE, value = "/deletepost")
67 | public String deletePost(@RequestParam(name = "postId") Integer postId)
68 | {
69 | image.deletePost(postId);
70 | return "redirect:/print_page";
71 | }
72 |
73 |
74 | }
75 |
76 |
--------------------------------------------------------------------------------
/src/main/java/com/imagehoster/ImageHosterApplication/controller/UserController.java:
--------------------------------------------------------------------------------
1 | package com.imagehoster.ImageHosterApplication.controller;
2 | import com.imagehoster.ImageHosterApplication.model.User;
3 | import com.imagehoster.ImageHosterApplication.model.UserProfile;
4 | import com.imagehoster.ImageHosterApplication.service.UserService;
5 | import org.springframework.beans.factory.annotation.Autowired;
6 | import org.springframework.stereotype.Controller;
7 | import org.springframework.ui.Model;
8 | import org.springframework.web.bind.annotation.RequestMapping;
9 | import org.springframework.web.bind.annotation.RequestMethod;
10 | import javax.servlet.http.HttpSession;
11 | @Controller
12 | public class UserController {
13 |
14 | @Autowired
15 | private UserService userService;
16 |
17 | @RequestMapping(method = RequestMethod.GET, value = "/users/login")
18 | public String login(Model model) {
19 | model.addAttribute("user", new User());
20 | return "Login/login_page";
21 | }
22 | // POST Request to "/users/login"
23 | @RequestMapping(method = RequestMethod.POST, value = "/login_success")
24 | public String loginUser(User user, HttpSession session)
25 | {
26 | User existingUser = userService.login(user);
27 | if(existingUser == null)
28 | {
29 | System.out.println("USER DOES NOT EXIST");
30 | return "Login/login_page";
31 | } else
32 | {
33 | session.setAttribute("LoggedUser", existingUser);
34 | System.out.println("USER FOUND!");
35 | return "redirect:print_page";
36 | }
37 | }
38 | @RequestMapping(method = RequestMethod.GET, value = "/users/signup")
39 | public String registration(Model model) {
40 | User user = new User();
41 | UserProfile userProfile = new UserProfile();
42 | user.setUserProfile(userProfile);
43 | model.addAttribute("user", user);
44 | return "Signup/signup";
45 | }
46 |
47 | @RequestMapping(method = RequestMethod.POST, value = "/signup")
48 | public String userRegistration(User user)
49 | {
50 | // Business logic to save the credentials. of the users to teh given database
51 | userService.registerUser(user);
52 | return "redirect:/users/login ";
53 | }
54 | @RequestMapping(method = RequestMethod.GET, value = "/users/logout")
55 | public String userLogout(HttpSession session) {
56 | session.invalidate();
57 | return "redirect:/users/login ";
58 | }
59 | }
60 |
61 |
--------------------------------------------------------------------------------
/src/main/java/com/imagehoster/ImageHosterApplication/model/Image.java:
--------------------------------------------------------------------------------
1 | package com.imagehoster.ImageHosterApplication.model;
2 | import javax.persistence.*;
3 | import java.util.Date;
4 | @Entity
5 | @Table(name = "image")
6 | public class Image {
7 | public Image()
8 | {
9 |
10 | }
11 | @Id
12 | @GeneratedValue(strategy = GenerationType.SEQUENCE)
13 | @Column(name = "id")
14 | private Integer id;
15 | @Column(name = "title")
16 | private String title;
17 | //The image in Base64 format
18 | @Column(name = "imagefile",columnDefinition = "TEXT")
19 | private String imageFile;
20 | @Column(name = "description")
21 | private String description;
22 | @Column(name = "tags")
23 | private String tags;
24 |
25 | public String getTags() {
26 | return tags;
27 | }
28 |
29 | public void setTags(String tags) {
30 | this.tags = tags;
31 | }
32 |
33 | //Date on which the image is posted
34 | @Column(name = "date")
35 | private Date date;
36 | @ManyToOne(fetch = FetchType.EAGER)
37 | @JoinColumn(name="user_id")
38 | private User user;
39 | public User getUser()
40 | {
41 | return user;
42 | }
43 | public void setUser(User user) {
44 | this.user = user;
45 | }
46 | //Write the constructor for id, title, imageFile, and date
47 | public Image(Integer id, String title, String imageFile, Date date) {
48 | this.id = id;
49 | this.title = title;
50 | this.imageFile = imageFile;
51 | this.date = date;
52 | }
53 | public Integer getId() {
54 | return id;
55 | }
56 | public void setId(Integer id) {
57 | this.id = id;
58 | }
59 | public String getTitle() {
60 | return title;
61 | }
62 | public void setTitle(String title) {
63 | this.title = title;
64 | }
65 | public String getImageFile() {
66 | return imageFile;
67 | }
68 | public void setImageFile(String imageFile) {
69 | this.imageFile = imageFile;
70 | }
71 | public String getDescription() {
72 | return description;
73 | }
74 | public void setDescription(String description) {
75 | this.description = description;
76 | }
77 | public Date getDate() {
78 | return date;
79 | }
80 | public void setDate(Date date) {
81 | this.date = date;
82 | }
83 | }
84 |
--------------------------------------------------------------------------------
/src/main/java/com/imagehoster/ImageHosterApplication/model/User.java:
--------------------------------------------------------------------------------
1 | package com.imagehoster.ImageHosterApplication.model;
2 |
3 | import javax.persistence.*;
4 | import java.util.ArrayList;
5 | import java.util.List;
6 | @Entity
7 | @Table(name = "users")
8 | public class User {
9 | @Id
10 | @GeneratedValue(strategy = GenerationType.SEQUENCE)
11 | @Column(name = "id")
12 | private Integer id;
13 |
14 | @Column(name = "username")
15 | private String username;
16 |
17 | @Column(name = "password")
18 | private String password;
19 |
20 | @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
21 | @JoinTable(name = "profile_id")
22 | private UserProfile userProfile;
23 |
24 | @OneToMany(mappedBy = "user", cascade = CascadeType.REMOVE, fetch = FetchType.LAZY)
25 | private List posts = new ArrayList<>();
26 |
27 | public UserProfile getUserProfile() {
28 | return userProfile;
29 | }
30 |
31 | public void setUserProfile(UserProfile userProfile) {
32 | this.userProfile = userProfile;
33 | }
34 |
35 |
36 | public Integer getId() {
37 | return id;
38 | }
39 |
40 | public void setId(Integer id) {
41 | this.id = id;
42 | }
43 |
44 | public String getUsername() {
45 | return username;
46 | }
47 |
48 | public void setUsername(String username) {
49 | this.username = username;
50 | }
51 |
52 | public String getPassword() {
53 | return password;
54 | }
55 |
56 | public void setPassword(String password) {
57 | this.password = password;
58 | }
59 |
60 | public List getPosts() {
61 | return posts;
62 | }
63 |
64 | public void setPosts(List posts) {
65 | this.posts = posts;
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/src/main/java/com/imagehoster/ImageHosterApplication/model/UserProfile.java:
--------------------------------------------------------------------------------
1 | package com.imagehoster.ImageHosterApplication.model;
2 |
3 |
4 | import javax.persistence.*;
5 |
6 | @Entity
7 | @Table(name = "user_profile")
8 | public class UserProfile {
9 |
10 | @Id
11 | @GeneratedValue(strategy = GenerationType.SEQUENCE)
12 | @Column(name = "id")
13 | private Integer id;
14 |
15 | @Column(name = "full_name")
16 | private String fullName;
17 |
18 | @Column(name = "email_address",unique=true)
19 | private String email;
20 |
21 | @Column(name = "mobile_number")
22 | private String mobileNumber;
23 |
24 | public Integer getId() {
25 | return id;
26 | }
27 |
28 | public void setId(Integer id) {
29 | this.id = id;
30 | }
31 |
32 | public String getFullName() {
33 | return fullName;
34 | }
35 |
36 | public void setFullName(String fullName) {
37 | this.fullName = fullName;
38 | }
39 |
40 | public String getEmail() {
41 | return email;
42 | }
43 |
44 | public void setEmail(String email) {
45 | this.email = email;
46 | }
47 |
48 | public String getMobileNumber() {
49 | return mobileNumber;
50 | }
51 |
52 | public void setMobileNumber(String mobileNumber) {
53 | this.mobileNumber = mobileNumber;
54 | }
55 |
56 |
57 | }
58 |
--------------------------------------------------------------------------------
/src/main/java/com/imagehoster/ImageHosterApplication/repository/ImageRepository.java:
--------------------------------------------------------------------------------
1 | package com.imagehoster.ImageHosterApplication.repository;
2 | import com.imagehoster.ImageHosterApplication.model.Image;
3 | import com.imagehoster.ImageHosterApplication.model.User;
4 | import org.springframework.stereotype.Repository;
5 | import javax.persistence.*;
6 | import java.util.*;
7 | @Repository
8 | public class ImageRepository {
9 | @PersistenceUnit(unitName = "image")
10 | private EntityManagerFactory entityManagerFactory;
11 |
12 | public void createPost(Image newPost) {
13 | EntityManager entityManager = entityManagerFactory.createEntityManager();
14 | EntityTransaction transaction = entityManager.getTransaction();
15 | try {
16 | transaction.begin();
17 | entityManager.persist(newPost);
18 | transaction.commit();
19 | } catch (Exception e) {
20 | System.out.println(e);
21 | transaction.rollback();
22 | }
23 | }
24 | public List getAllPosts(User user) {
25 | int a = user.getId();
26 | EntityManager entityManager = entityManagerFactory.createEntityManager();
27 | TypedQuery query = entityManager.createQuery("SELECT p from Image p WHERE p.user = :user", Image.class);
28 | query.setParameter("user", user);
29 | List result = query.getResultList();
30 | return result;
31 | }
32 | public Image getImage(Integer postId) {
33 | EntityManager entityManager = entityManagerFactory.createEntityManager();
34 | return entityManager.find(Image.class, postId);
35 | }
36 | public void updatePost(Image updatePost) {
37 | EntityManager entityManager = entityManagerFactory.createEntityManager();
38 | EntityTransaction transaction = entityManager.getTransaction();
39 | try {
40 | transaction.begin();
41 | entityManager.merge(updatePost);
42 | transaction.commit();
43 | } catch (Exception e) {
44 | System.out.println(e);
45 | transaction.rollback();
46 | }
47 | }
48 | public void deletePost(Integer postId)
49 | {
50 | EntityManager entityManager = entityManagerFactory.createEntityManager();
51 | EntityTransaction transaction = entityManager.getTransaction();
52 | try {
53 | transaction.begin();
54 | Image post = entityManager.find(Image.class, postId);
55 |
56 | entityManager.remove(post);
57 | transaction.commit();
58 | } catch (Exception e) {
59 | System.out.println(e);
60 | transaction.rollback();
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/src/main/java/com/imagehoster/ImageHosterApplication/repository/UserRepository.java:
--------------------------------------------------------------------------------
1 | package com.imagehoster.ImageHosterApplication.repository;
2 |
3 | import com.imagehoster.ImageHosterApplication.model.User;
4 | import org.springframework.stereotype.Repository;
5 |
6 | import javax.persistence.*;
7 |
8 | @Repository
9 | public class UserRepository {
10 |
11 | // EntityManagerFactory
12 | @PersistenceUnit(unitName = "image")
13 | private EntityManagerFactory entityManagerFactory;
14 |
15 | public void registerUser(User newUser) {
16 | EntityManager entityManager = entityManagerFactory.createEntityManager();
17 | EntityTransaction transaction = entityManager.getTransaction();
18 | try {
19 | transaction.begin();
20 | entityManager.persist(newUser);
21 | transaction.commit();
22 |
23 | } catch (Exception e) {
24 | System.out.println(e);
25 | transaction.rollback();
26 | }
27 | }
28 |
29 | public User checkCredentials(String username, String password) {
30 | try {
31 | EntityManager entityManager = entityManagerFactory.createEntityManager();
32 | TypedQuery query = entityManager.createQuery("SELECT u FROM User u WHERE u.username = :username AND u.password = :password", User.class);
33 | query.setParameter("username", username);
34 | query.setParameter("password", password);
35 | return query.getSingleResult();
36 | } catch (NoResultException e) {
37 | return null;
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/java/com/imagehoster/ImageHosterApplication/service/ImageService.java:
--------------------------------------------------------------------------------
1 | package com.imagehoster.ImageHosterApplication.service;
2 | import com.imagehoster.ImageHosterApplication.model.Image;
3 | import com.imagehoster.ImageHosterApplication.model.User;
4 | import com.imagehoster.ImageHosterApplication.repository.ImageRepository;
5 | import org.springframework.beans.factory.annotation.Autowired;
6 | import org.springframework.stereotype.Service;
7 | import org.springframework.web.multipart.MultipartFile;
8 |
9 | import javax.persistence.EntityManager;
10 | import java.io.IOException;
11 | import java.util.Base64;
12 | import java.util.List;
13 |
14 | @Service
15 | public class ImageService {
16 | @Autowired
17 | private ImageRepository image;
18 | public void createPost(Image newPost,MultipartFile file)
19 | {
20 | try
21 | {
22 | newPost.setImageFile(ConvertImgToBase64((file)));
23 | image.createPost(newPost);
24 | }
25 | catch(Exception e)
26 | {
27 | System.out.println("eroor");
28 | System.out.println(e);
29 | }
30 |
31 | }
32 | private String ConvertImgToBase64(MultipartFile file) throws IOException
33 | {
34 | return Base64.getEncoder().encodeToString(file.getBytes());
35 | }
36 | @Autowired
37 | private ImageRepository imageRepository;
38 | public List getAllPost(User user)
39 | {
40 | return imageRepository.getAllPosts(user);
41 | }
42 | public Image getImage(Integer postId)
43 | {
44 | return image.getImage(postId);
45 | }
46 | public void updatePost(Image updatedPost,MultipartFile file)
47 | {
48 | try
49 | {
50 | updatedPost.setImageFile(ConvertImgToBase64((file)));
51 | image.updatePost(updatedPost);
52 | }
53 | catch(Exception e)
54 | {
55 | System.out.println(e);
56 | }
57 | }
58 | public void deletePost(Integer postId)
59 | {
60 | image.deletePost(postId);
61 | }
62 |
63 | }
64 |
65 |
--------------------------------------------------------------------------------
/src/main/java/com/imagehoster/ImageHosterApplication/service/UserService.java:
--------------------------------------------------------------------------------
1 | package com.imagehoster.ImageHosterApplication.service;
2 |
3 | import com.imagehoster.ImageHosterApplication.model.User;
4 | import com.imagehoster.ImageHosterApplication.repository.UserRepository;
5 | import org.springframework.beans.factory.annotation.Autowired;
6 | import org.springframework.stereotype.Service;
7 |
8 | @Service
9 | public class UserService {
10 |
11 | @Autowired
12 | private UserRepository userRepository;
13 |
14 | public User login(User user) {
15 | User existingUser = userRepository.checkCredentials(user.getUsername(), user.getPassword());
16 | if(existingUser == null) {
17 | return null;
18 | } else {
19 | return existingUser;
20 | }
21 | }
22 |
23 | public void registerUser(User newUser) {
24 | userRepository.registerUser(newUser);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/resources/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ashish2030/Image-Hosting-Application-Using-Spring-Boot-Technology/2027d3e91ce8943b82e0035a4c07f810efeb1b6d/src/main/resources/.DS_Store
--------------------------------------------------------------------------------
/src/main/resources/META-INF/persistence.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 | org.hibernate.jpa.HibernatePersistenceProvider
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | # Global DATASOURCE | Global Configurations -> Connect to PostgreSQL
2 |
3 | spring.datasource.url = jdbc:postgresql://ec2-52-71-161-140.compute-1.amazonaws.com:5432/d1p7k5e5kko1ub
4 | spring.datasource.username = ixkgcmbetknaeg
5 | spring.datasource.password = 28f7232f0986beb283740a5bc98fc0cadaee6ead9be32c3047b8450760ee4991
6 |
7 | #spring.datasource.url = jdbc:postgresql://localhost:5432/image
8 | #spring.datasource.username = postgres
9 | #spring.datasource.password = Chitkara@123
10 |
11 | spring.jpa.show-sql=true
12 |
13 | # The SQL Dialect -> makes the SQL queries run faster and efficient | Hibernate to manage the DB
14 | spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
15 |
16 | # Authorization to Hibernate to perform DLL Operations | create, update, delete
17 | spring.jpa.hibernate.ddl-auto = create
18 |
19 | spring.mvc.hiddenmethod.filter.enabled=true
20 | spring.servlet.multipart.max-file-size=10MB
21 | spring.servlet.multipart.max-request-size=10MB
22 |
--------------------------------------------------------------------------------
/src/main/resources/static/css/Upload_style.css:
--------------------------------------------------------------------------------
1 | section {
2 | margin-top: 100px;
3 | }
4 | a, a:hover, a:focus, a:active {
5 | text-decoration: none;
6 | color: inherit;
7 | }
8 | span {
9 | color: #eb9e34;
10 | font-family: 'Dancing Script', cursive;
11 | font-size:25px;
12 | }
13 | .img
14 | {
15 | width:90%;
16 | padding: 0;
17 | margin: 0;
18 | vertical-align:top;
19 | }
20 | .navbar {
21 | height: 80px;
22 | background-color: transparent;
23 | border: none;
24 | color: white;
25 | z-index: 100;
26 | transition: background-color 1s ease 0s;
27 | }
28 | .navbar-default .navbar-brand {
29 | margin-top: 10px;
30 | color: black;
31 | }
32 | .navbar-default .navbar-brand:hover {
33 | color: black;
34 | border: 1px solid #C57ED3;
35 | }
36 | .navbar-default .navbar-nav > li > a {
37 | color: black;
38 | margin: 10px 5px 5px 5px;
39 | }
40 | .navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:active, .navbar-default .navbar-nav > li > a:focus {
41 | color: #C57ED3;
42 | border: 1px solid #C57ED3;
43 | }
44 | .navbar-default .navbar-nav > li > a:visited {
45 | color: #C57ED3;
46 | text-decoration: none;
47 | }
48 | .navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus {
49 | background-color: transparent;
50 | color: #C57ED3;
51 | }
52 | .navbar-default .navbar-toggle {
53 | border-color: #C57ED3;
54 | }
55 | .navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {
56 | background-color: #490D40;
57 | }
58 | .navbar-default .navbar-toggle .icon-bar {
59 | color: #C57ED3;
60 | background-color: #C57ED3;
61 | }
62 | .navbar-default .navbar-collapse.collapse.in ul {
63 | background-color: #490D40;
64 | }
65 |
66 | /* Solid class attached on scroll past first section */
67 | .navbar.solid {
68 | background-color: #490D40;
69 | transition: background-color 1s ease 0s;
70 | box-shadow: 0 0 4px grey;
71 | }
72 | .navbar.solid .navbar-brand {
73 | color: #C57ED3;
74 | transition: color 1s ease 0s;
75 | }
76 | .navbar.solid .navbar-nav > li > a {
77 | color: #C57ED3;
78 | transition: color 1s ease 0s;
79 | }
80 |
81 | .about {
82 | background-color: #C57ED3;
83 | color: #490D40;
84 | height: 600px;
85 | text-align: center;
86 | margin-top: -20px;
87 | }
88 | .about h2 {
89 | padding-top: 220px;
90 | }
91 | .about p {
92 | padding: 20px 80px;
93 | }
94 | @import url(https://fonts.googleapis.com/css?family=Dancing+Script|Roboto);
95 | *, *:after, *:before {
96 | box-sizing: border-box;
97 | }
98 | h1 {
99 | margin-top: 0 ;
100 | margin-bottom: 0;
101 | }
102 |
103 | body {
104 | background-color:#01002a;
105 | text-align: center;
106 | font-family: 'Roboto', sans-serif;
107 | }
108 |
109 | .panda {
110 | position: relative;
111 | width: 200px;
112 | margin: 50px auto;
113 | }
114 | .a
115 | {
116 |
117 | margin:0px;
118 | }
119 |
120 | .face {
121 | width: 200px;
122 | height: 200px;
123 | background: #fff;
124 | border-radius: 100%;
125 | margin: 50px auto;
126 | box-shadow: 0 10px 15px rgba(0, 0, 0, 0.15);
127 | z-index: 50;
128 | position: relative;
129 | }
130 |
131 | .ear, .ear:after {
132 | position: absolute;
133 | width: 80px;
134 | height: 80px;
135 | background: #000;
136 | z-index: 5;
137 | border: 10px solid #fff;
138 | left: -15px;
139 | top: -15px;
140 | border-radius: 100%;
141 | }
142 | .ear:after {
143 | content: '';
144 | left: 125px;
145 | }
146 |
147 | .eye-shade {
148 | background: #000;
149 | width: 50px;
150 | height: 80px;
151 | margin: 10px;
152 | position: absolute;
153 | top: 35px;
154 | left: 25px;
155 | transform: rotate(220deg);
156 | border-radius: 25px/20px 30px 35px 40px;
157 | }
158 | .eye-shade.rgt {
159 | transform: rotate(140deg);
160 | left: 105px;
161 | }
162 |
163 | .eye-white {
164 | position: absolute;
165 | width: 30px;
166 | height: 30px;
167 | border-radius: 100%;
168 | background: #fff;
169 | z-index: 500;
170 | left: 40px;
171 | top: 80px;
172 | overflow: hidden;
173 | }
174 | .eye-white.rgt {
175 | right: 40px;
176 | left: auto;
177 | }
178 |
179 | .eye-ball {
180 | position: absolute;
181 | width: 0px;
182 | height: 0px;
183 | left: 20px;
184 | top: 20px;
185 | max-width: 10px;
186 | max-height: 10px;
187 | transition: 0.1s;
188 | }
189 | .eye-ball:after {
190 | content: '';
191 | background: #000;
192 | position: absolute;
193 | border-radius: 100%;
194 | right: 0;
195 | bottom: 0px;
196 | width: 20px;
197 | height: 20px;
198 | }
199 |
200 | .nose {
201 | position: absolute;
202 | height: 20px;
203 | width: 35px;
204 | bottom: 40px;
205 | left: 0;
206 | right: 0;
207 | margin: auto;
208 | border-radius: 50px 20px/30px 15px;
209 | transform: rotate(15deg);
210 | background: #000;
211 | }
212 |
213 | .body {
214 | background: #fff;
215 | position: absolute;
216 | top: 200px;
217 | left: -20px;
218 | border-radius: 100px 100px 100px 100px/126px 126px 96px 96px;
219 | width: 250px;
220 | height: 282px;
221 | box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3);
222 | }
223 |
224 | .hand, .hand:after, .hand:before {
225 | width: 40px;
226 | height: 30px;
227 | border-radius: 50px;
228 | box-shadow: 0 2px 3px rgba(0, 0, 0, 0.15);
229 | background: #000;
230 | margin: 5px;
231 | position: absolute;
232 | top: 70px;
233 | left: -25px;
234 | }
235 | .hand:after, .hand:before {
236 | content: '';
237 | left: -5px;
238 | top: 11px;
239 | }
240 | .hand:before {
241 | top: 26px;
242 | }
243 | .hand.rgt, .rgt.hand:after, .rgt.hand:before {
244 | left: auto;
245 | right: -25px;
246 | }
247 | .hand.rgt:after, .hand.rgt:before {
248 | left: auto;
249 | right: -5px;
250 | }
251 |
252 | .foot {
253 | top: 360px;
254 | left: -90px;
255 | position: absolute;
256 | background: #000;
257 | z-index: 1400;
258 | box-shadow: 0 5px 5px rgba(0, 0, 0, 0.2);
259 | border-radius: 40px 40px 39px 40px/26px 26px 63px 63px;
260 | width: 82px;
261 | height: 120px;
262 | }
263 | .foot:after {
264 | content: '';
265 | width: 55px;
266 | height: 65px;
267 | background: #222;
268 | border-radius: 100%;
269 | position: absolute;
270 | bottom: 10px;
271 | left: 0;
272 | right: 0;
273 | margin: auto;
274 | }
275 | .foot .finger, .foot .finger:after, .foot .finger:before {
276 | position: absolute;
277 | width: 25px;
278 | height: 35px;
279 | background: #222;
280 | border-radius: 100%;
281 | top: 10px;
282 | right: 5px;
283 | }
284 | .foot .finger:after, .foot .finger:before {
285 | content: '';
286 | right: 30px;
287 | width: 20px;
288 | top: 0;
289 | }
290 | .foot .finger:before {
291 | right: 55px;
292 | top: 5px;
293 | }
294 | .foot.rgt {
295 | left: auto;
296 | right: -90px;
297 | }
298 | .foot.rgt .finger, .foot.rgt .finger:after, .foot.rgt .finger:before {
299 | left: 5px;
300 | right: auto;
301 | }
302 | .foot.rgt .finger:after {
303 | left: 30px;
304 | right: auto;
305 | }
306 | .foot.rgt .finger:before {
307 | left: 55px;
308 | right: auto;
309 | }
310 |
311 | form {
312 | display: none;
313 | max-width: 400px;
314 | padding: 20px 40px;
315 | background: #fff;
316 | height: 307px;
317 | margin: auto;
318 | display: block;
319 | box-shadow: 0 10px 15px rgba(0, 0, 0, 0.15);
320 | transition: 0.3s;
321 | position: relative;
322 | transform: translateY(-100px);
323 | z-index: 500;
324 | border: 1px solid #eee;
325 | }
326 | form.up {
327 | transform: translateY(-190px);
328 | }
329 |
330 | h1 {
331 | color: #FF4081;
332 | font-family: 'Dancing Script', cursive;
333 | }
334 |
335 | .btn {
336 | background: #fff;
337 | padding: 5px;
338 | width: 150px;
339 | height: 35px;
340 | border: 1px solid #FF4081;
341 | margin-top: -11px;
342 | cursor: pointer;
343 | transition: 0.3s;
344 | box-shadow: 0 50px #FF4081 inset;
345 | color: #fff;
346 | }
347 | .btn:hover {
348 | box-shadow: 0 0 #FF4081 inset;
349 | color: #FF4081;
350 | }
351 | .btn:focus {
352 | outline: none;
353 | }
354 |
355 | .form-group {
356 | position: relative;
357 | font-size: 15px;
358 | color: #666;
359 | }
360 | .form-group + .form-group {
361 | margin-top: 10px;
362 | }
363 | .form-group .form-label {
364 | position: absolute;
365 | z-index: 1;
366 | left: 0;
367 | top: 2px;
368 | transition: 0.3s;
369 | }
370 | .form-group .form-control {
371 | width: 100%;
372 | position: relative;
373 | z-index: 3;
374 | height: 35px;
375 | background: none;
376 | border: none;
377 | padding: 1px 0;
378 | transition: 0.3s;
379 | border-bottom: 1px solid #777;
380 | color: #555;
381 | }
382 | .form-group .form-control:invalid {
383 | outline: none;
384 | }
385 | .form-group .form-control:focus, .form-group .form-control:valid {
386 | outline: none;
387 | box-shadow: 0 1px #FF4081;
388 | border-color: #FF4081;
389 | }
390 | .form-group .form-control:focus + .form-label, .form-group .form-control:valid + .form-label {
391 | font-size: 12px;
392 | color: #FF4081;
393 | transform: translateY(-10px);
394 | }
395 | #che1
396 | {
397 | display: none;
398 | }
399 |
400 |
401 | .alert {
402 | position: absolute;
403 | color: #f00;
404 | font-size: 16px;
405 | right: -140px;
406 | top: -160px;
407 | z-index: 200;
408 | padding: 30px 25px;
409 | background: #fff;
410 | box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);
411 | border-radius: 50%;
412 | opacity: 0;
413 | transform: scale(0, 0);
414 | -moz-transition: linear 0.4s 0.6s;
415 | -o-transition: linear 0.4s 0.6s;
416 | -webkit-transition: linear 0.4s;
417 | -webkit-transition-delay: 0.6s;
418 | transition: linear 0.4s 0.6s;
419 | }
420 | .alert:after, .alert:before {
421 | content: '';
422 | position: absolute;
423 | width: 25px;
424 | height: 25px;
425 | background: #fff;
426 | left: -19px;
427 | bottom: -8px;
428 | box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
429 | border-radius: 50%;
430 | }
431 | .alert:before {
432 | width: 15px;
433 | height: 15px;
434 | left: -35px;
435 | bottom: -25px;
436 | }
437 |
438 | .wrong-entry {
439 | -webkit-animation: wrong-log 0.3s;
440 | animation: wrong-log 0.3s;
441 | }
442 | .wrong-entry .alert {
443 | opacity: 1;
444 | transform: scale(1, 1);
445 | }
446 | @-webkit-keyframes eye-blink {
447 | to {
448 | height: 30px;
449 | }
450 | }
451 | @keyframes eye-blink {
452 | to {
453 | height: 30px;
454 | }
455 | }
456 | @-webkit-keyframes wrong-log {
457 | 0%, 100% {
458 | left: 0px;
459 | }
460 | 20% , 60% {
461 | left: 20px;
462 | }
463 | 40% , 80% {
464 | left: -20px;
465 | }
466 | }
467 | @keyframes wrong-log {
468 | 0%, 100% {
469 | left: 0px;
470 | }
471 | 20% , 60% {
472 | left: 20px;
473 | }
474 | 40% , 80% {
475 | left: -20px;
476 | }
477 | }
478 |
--------------------------------------------------------------------------------
/src/main/resources/static/css/edit_pagestyle.css:
--------------------------------------------------------------------------------
1 | section {
2 | margin-top: 100px;
3 | }
4 | a, a:hover, a:focus, a:active {
5 | text-decoration: none;
6 | color: inherit;
7 | }
8 | span {
9 | color: #eb9e34;
10 | font-family: 'Dancing Script', cursive;
11 | font-size:25px;
12 | }
13 | .img
14 | {
15 | width:90%;
16 | padding: 0;
17 | margin: 0;
18 | vertical-align:top;
19 | }
20 | .navbar {
21 | height: 80px;
22 | background-color: transparent;
23 | border: none;
24 | color: white;
25 | z-index: 100;
26 | transition: background-color 1s ease 0s;
27 | }
28 | .navbar-default .navbar-brand {
29 | margin-top: 10px;
30 | color: black;
31 | }
32 | .navbar-default .navbar-brand:hover {
33 | color: black;
34 | border: 1px solid #C57ED3;
35 | }
36 | .navbar-default .navbar-nav > li > a {
37 | color: black;
38 | margin: 10px 5px 5px 5px;
39 | }
40 | .navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:active, .navbar-default .navbar-nav > li > a:focus {
41 | color: #C57ED3;
42 | border: 1px solid #C57ED3;
43 | }
44 | .navbar-default .navbar-nav > li > a:visited {
45 | color: #C57ED3;
46 | text-decoration: none;
47 | }
48 | .navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus {
49 | background-color: transparent;
50 | color: #C57ED3;
51 | }
52 | .navbar-default .navbar-toggle {
53 | border-color: #C57ED3;
54 | }
55 | .navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {
56 | background-color: #490D40;
57 | }
58 | .navbar-default .navbar-toggle .icon-bar {
59 | color: #C57ED3;
60 | background-color: #C57ED3;
61 | }
62 | .navbar-default .navbar-collapse.collapse.in ul {
63 | background-color: #490D40;
64 | }
65 |
66 | /* Solid class attached on scroll past first section */
67 | .navbar.solid {
68 | background-color: #490D40;
69 | transition: background-color 1s ease 0s;
70 | box-shadow: 0 0 4px grey;
71 | }
72 | .navbar.solid .navbar-brand {
73 | color: #C57ED3;
74 | transition: color 1s ease 0s;
75 | }
76 | .navbar.solid .navbar-nav > li > a {
77 | color: #C57ED3;
78 | transition: color 1s ease 0s;
79 | }
80 |
81 | .about {
82 | background-color: #C57ED3;
83 | color: #490D40;
84 | height: 600px;
85 | text-align: center;
86 | margin-top: -20px;
87 | }
88 | .about h2 {
89 | padding-top: 220px;
90 | }
91 | .about p {
92 | padding: 20px 80px;
93 | }
94 | @import url(https://fonts.googleapis.com/css?family=Dancing+Script|Roboto);
95 | *, *:after, *:before {
96 | box-sizing: border-box;
97 | }
98 | h1 {
99 | margin-top: 0 ;
100 | margin-bottom: 0;
101 | }
102 |
103 | body {
104 | background-color:#01002a;
105 | text-align: center;
106 | font-family: 'Roboto', sans-serif;
107 | }
108 |
109 | .panda {
110 | position: relative;
111 | width: 200px;
112 | margin: 50px auto;
113 | }
114 | .a
115 | {
116 |
117 | margin:0px;
118 | }
119 |
120 | .face {
121 | width: 200px;
122 | height: 200px;
123 | background: #fff;
124 | border-radius: 100%;
125 | margin: 50px auto;
126 | box-shadow: 0 10px 15px rgba(0, 0, 0, 0.15);
127 | z-index: 50;
128 | position: relative;
129 | }
130 |
131 | .ear, .ear:after {
132 | position: absolute;
133 | width: 80px;
134 | height: 80px;
135 | background: #000;
136 | z-index: 5;
137 | border: 10px solid #fff;
138 | left: -15px;
139 | top: -15px;
140 | border-radius: 100%;
141 | }
142 | .ear:after {
143 | content: '';
144 | left: 125px;
145 | }
146 |
147 | .eye-shade {
148 | background: #000;
149 | width: 50px;
150 | height: 80px;
151 | margin: 10px;
152 | position: absolute;
153 | top: 35px;
154 | left: 25px;
155 | transform: rotate(220deg);
156 | border-radius: 25px/20px 30px 35px 40px;
157 | }
158 | .eye-shade.rgt {
159 | transform: rotate(140deg);
160 | left: 105px;
161 | }
162 |
163 | .eye-white {
164 | position: absolute;
165 | width: 30px;
166 | height: 30px;
167 | border-radius: 100%;
168 | background: #fff;
169 | z-index: 500;
170 | left: 40px;
171 | top: 80px;
172 | overflow: hidden;
173 | }
174 | .eye-white.rgt {
175 | right: 40px;
176 | left: auto;
177 | }
178 |
179 | .eye-ball {
180 | position: absolute;
181 | width: 0px;
182 | height: 0px;
183 | left: 20px;
184 | top: 20px;
185 | max-width: 10px;
186 | max-height: 10px;
187 | transition: 0.1s;
188 | }
189 | .eye-ball:after {
190 | content: '';
191 | background: #000;
192 | position: absolute;
193 | border-radius: 100%;
194 | right: 0;
195 | bottom: 0px;
196 | width: 20px;
197 | height: 20px;
198 | }
199 |
200 | .nose {
201 | position: absolute;
202 | height: 20px;
203 | width: 35px;
204 | bottom: 40px;
205 | left: 0;
206 | right: 0;
207 | margin: auto;
208 | border-radius: 50px 20px/30px 15px;
209 | transform: rotate(15deg);
210 | background: #000;
211 | }
212 |
213 | .body {
214 | background: #fff;
215 | position: absolute;
216 | top: 200px;
217 | left: -20px;
218 | border-radius: 100px 100px 100px 100px/126px 126px 96px 96px;
219 | width: 250px;
220 | height: 282px;
221 | box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3);
222 | }
223 |
224 | .hand, .hand:after, .hand:before {
225 | width: 40px;
226 | height: 30px;
227 | border-radius: 50px;
228 | box-shadow: 0 2px 3px rgba(0, 0, 0, 0.15);
229 | background: #000;
230 | margin: 5px;
231 | position: absolute;
232 | top: 70px;
233 | left: -25px;
234 | }
235 | .hand:after, .hand:before {
236 | content: '';
237 | left: -5px;
238 | top: 11px;
239 | }
240 | .hand:before {
241 | top: 26px;
242 | }
243 | .hand.rgt, .rgt.hand:after, .rgt.hand:before {
244 | left: auto;
245 | right: -25px;
246 | }
247 | .hand.rgt:after, .hand.rgt:before {
248 | left: auto;
249 | right: -5px;
250 | }
251 |
252 | .foot {
253 | top: 360px;
254 | left: -90px;
255 | position: absolute;
256 | background: #000;
257 | z-index: 1400;
258 | box-shadow: 0 5px 5px rgba(0, 0, 0, 0.2);
259 | border-radius: 40px 40px 39px 40px/26px 26px 63px 63px;
260 | width: 82px;
261 | height: 120px;
262 | }
263 | .foot:after {
264 | content: '';
265 | width: 55px;
266 | height: 65px;
267 | background: #222;
268 | border-radius: 100%;
269 | position: absolute;
270 | bottom: 10px;
271 | left: 0;
272 | right: 0;
273 | margin: auto;
274 | }
275 | .foot .finger, .foot .finger:after, .foot .finger:before {
276 | position: absolute;
277 | width: 25px;
278 | height: 35px;
279 | background: #222;
280 | border-radius: 100%;
281 | top: 10px;
282 | right: 5px;
283 | }
284 | .foot .finger:after, .foot .finger:before {
285 | content: '';
286 | right: 30px;
287 | width: 20px;
288 | top: 0;
289 | }
290 | .foot .finger:before {
291 | right: 55px;
292 | top: 5px;
293 | }
294 | .foot.rgt {
295 | left: auto;
296 | right: -90px;
297 | }
298 | .foot.rgt .finger, .foot.rgt .finger:after, .foot.rgt .finger:before {
299 | left: 5px;
300 | right: auto;
301 | }
302 | .foot.rgt .finger:after {
303 | left: 30px;
304 | right: auto;
305 | }
306 | .foot.rgt .finger:before {
307 | left: 55px;
308 | right: auto;
309 | }
310 |
311 | form {
312 | display: none;
313 | max-width: 400px;
314 | padding: 20px 40px;
315 | background: #fff;
316 | height: 307px;
317 | margin: auto;
318 | display: block;
319 | box-shadow: 0 10px 15px rgba(0, 0, 0, 0.15);
320 | transition: 0.3s;
321 | position: relative;
322 | transform: translateY(-100px);
323 | z-index: 500;
324 | border: 1px solid #eee;
325 | }
326 | form.up {
327 | transform: translateY(-190px);
328 | }
329 |
330 | h1 {
331 | color: #FF4081;
332 | font-family: 'Dancing Script', cursive;
333 | }
334 |
335 | .btn {
336 | background: #fff;
337 | padding: 5px;
338 | width: 140px;
339 | height: 30px;
340 | border: 1px solid #FF4081;
341 | margin-top: -11px;
342 | cursor: pointer;
343 | transition: 0.3s;
344 | box-shadow: 0 50px #FF4081 inset;
345 | color: #fff;
346 | }
347 | .btn:hover {
348 | box-shadow: 0 0 #FF4081 inset;
349 | color: #FF4081;
350 | }
351 | .btn:focus {
352 | outline: none;
353 | }
354 |
355 | .form-group {
356 | position: relative;
357 | font-size: 15px;
358 | color: #666;
359 | }
360 | .form-group + .form-group {
361 | margin-top: 10px;
362 | }
363 | .form-group .form-label {
364 | position: absolute;
365 | z-index: 1;
366 | left: 0;
367 | top: 2px;
368 | transition: 0.3s;
369 | }
370 | .form-group .form-control {
371 | width: 100%;
372 | position: relative;
373 | z-index: 3;
374 | height: 35px;
375 | background: none;
376 | border: none;
377 | padding: 1px 0;
378 | transition: 0.3s;
379 | border-bottom: 1px solid #777;
380 | color: #555;
381 | }
382 | .form-group .form-control:invalid {
383 | outline: none;
384 | }
385 | .form-group .form-control:focus, .form-group .form-control:valid {
386 | outline: none;
387 | box-shadow: 0 1px #FF4081;
388 | border-color: #FF4081;
389 | }
390 | .form-group .form-control:focus + .form-label, .form-group .form-control:valid + .form-label {
391 | font-size: 12px;
392 | color: #FF4081;
393 | transform: translateY(-10px);
394 | }
395 | #che1
396 | {
397 | display: none;
398 | }
399 |
400 |
401 | .alert {
402 | position: absolute;
403 | color: #f00;
404 | font-size: 16px;
405 | right: -140px;
406 | top: -160px;
407 | z-index: 200;
408 | padding: 30px 25px;
409 | background: #fff;
410 | box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);
411 | border-radius: 50%;
412 | opacity: 0;
413 | transform: scale(0, 0);
414 | -moz-transition: linear 0.4s 0.6s;
415 | -o-transition: linear 0.4s 0.6s;
416 | -webkit-transition: linear 0.4s;
417 | -webkit-transition-delay: 0.6s;
418 | transition: linear 0.4s 0.6s;
419 | }
420 | .alert:after, .alert:before {
421 | content: '';
422 | position: absolute;
423 | width: 25px;
424 | height: 25px;
425 | background: #fff;
426 | left: -19px;
427 | bottom: -8px;
428 | box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
429 | border-radius: 50%;
430 | }
431 | .alert:before {
432 | width: 15px;
433 | height: 15px;
434 | left: -35px;
435 | bottom: -25px;
436 | }
437 |
438 | .wrong-entry {
439 | -webkit-animation: wrong-log 0.3s;
440 | animation: wrong-log 0.3s;
441 | }
442 | .wrong-entry .alert {
443 | opacity: 1;
444 | transform: scale(1, 1);
445 | }
446 | @-webkit-keyframes eye-blink {
447 | to {
448 | height: 30px;
449 | }
450 | }
451 | @keyframes eye-blink {
452 | to {
453 | height: 30px;
454 | }
455 | }
456 | @-webkit-keyframes wrong-log {
457 | 0%, 100% {
458 | left: 0px;
459 | }
460 | 20% , 60% {
461 | left: 20px;
462 | }
463 | 40% , 80% {
464 | left: -20px;
465 | }
466 | }
467 | @keyframes wrong-log {
468 | 0%, 100% {
469 | left: 0px;
470 | }
471 | 20% , 60% {
472 | left: 20px;
473 | }
474 | 40% , 80% {
475 | left: -20px;
476 | }
477 | }
478 |
--------------------------------------------------------------------------------
/src/main/resources/static/css/index_style.css:
--------------------------------------------------------------------------------
1 | html
2 | {
3 | scroll-behavior: smooth;
4 | }
5 | *
6 | {
7 | padding: 0; margin: 0;
8 | }
9 | .link
10 | {
11 | color: #eb9e34;
12 | font-family: 'Dancing Script', cursive;
13 | font-size:25px;
14 | }
15 | body
16 | {
17 | background-color:#01002a;
18 | }
19 | .flex-container
20 | {
21 | display: flex;
22 | justify-content: space-between;
23 | align-items: center;
24 | background-color:#C57ED3;
25 | }
26 | .navbar {
27 | height: 80px;
28 | background-color: transparent;
29 | border: none;
30 | color: white;
31 | z-index: 100;
32 | transition: background-color 1s ease 0s;
33 | }
34 | .navbar-default .navbar-brand {
35 | margin-top: 10px;
36 | color: black;
37 | }
38 | .navbar-default .navbar-brand:hover {
39 | color: black;
40 | border: 1px solid #C57ED3;
41 | }
42 | .navbar-default .navbar-nav > li > a {
43 | color: black;
44 | margin: 10px 5px 5px 5px;
45 | }
46 | .navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:active, .navbar-default .navbar-nav > li > a:focus {
47 | color: #C57ED3;
48 | border: 1px solid #C57ED3;
49 | }
50 | .navbar-default .navbar-nav > li > a:visited {
51 | color: #C57ED3;
52 | text-decoration: none;
53 | }
54 | .navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus {
55 | background-color: transparent;
56 | color: #C57ED3;
57 | }
58 | .navbar-default .navbar-toggle {
59 | border-color: #C57ED3;
60 | }
61 | .navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {
62 | background-color: #490D40;
63 | }
64 | .navbar-default .navbar-toggle .icon-bar {
65 | color: #C57ED3;
66 | background-color: #C57ED3;
67 | }
68 | .navbar-default .navbar-collapse.collapse.in ul {
69 | background-color: #490D40;
70 | }
71 | /* Solid class attached on scroll past first section */
72 | .navbar.solid {
73 | background-color: #490D40;
74 | transition: background-color 1s ease 0s;
75 | box-shadow: 0 0 4px grey;
76 | }
77 | .navbar.solid .navbar-brand {
78 | color: #C57ED3;
79 | transition: color 1s ease 0s;
80 | }
81 | .navbar.solid .navbar-nav > li > a {
82 | color: #C57ED3;
83 | transition: color 1s ease 0s;
84 | }
85 | .navigation
86 | {
87 | display: flex;
88 | }
89 | .navigation a
90 | {
91 | display: block;
92 | padding: 1em;
93 | }
94 | .navigation a:hover
95 | {
96 | background: #c5b8ff;
97 | }
98 | @media all and (max-width: 990px)
99 | {
100 | .flex-container
101 | {
102 | flex-direction: column;
103 | }
104 | .logo
105 | {
106 | margin: 0;
107 | }
108 | .navigation
109 | {
110 | width: 100%;
111 | justify-content: space-around;
112 | }
113 | }
114 | @media all and (max-width: 600px) {
115 | .logo
116 | {
117 | margin: .25em 0;
118 | align-self: center;
119 | }
120 | .navigation {
121 | flex-direction: column;
122 | }
123 | .navigation a {
124 | text-align: center;
125 | padding: 10px;
126 | }
127 | }
128 | .container {
129 | position: relative;
130 | text-align: center;
131 | color: white;
132 | }
133 | .bgImage{
134 |
135 | width: 100%;
136 | height: 100vh;
137 | }
138 | .line
139 | {
140 | display:inline;
141 | }
142 | .flipCardContainer{
143 | display: flex;
144 | align-items: center;
145 | justify-content: space-between;
146 | }
147 | .flip-card {
148 | background-color: transparent;
149 | width: 300px;
150 | height: 300px;
151 | perspective: 1000px;
152 | }
153 | .avtarImg{
154 | width: 100%;
155 | height: 300px;
156 | }
157 | .flip-card-inner {
158 | position: relative;
159 | width: 100%;
160 | height: 100%;
161 | text-align: center;
162 | transition: transform 0.6s;
163 | transform-style: preserve-3d;
164 | box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);
165 | }
166 | .flip-card:hover .flip-card-inner {
167 | transform: rotateY(180deg);
168 | }
169 | .flip-card-front, .flip-card-back {
170 | position: absolute;
171 | width: 100%;
172 | height: 100%;
173 | -webkit-backface-visibility: hidden;
174 | backface-visibility: hidden;
175 | }
176 | .flip-card-front {
177 | background-color: #bbb;
178 | color: black;
179 | }
180 | #card1{
181 | background-color: #FF9A8B;
182 | background-image: linear-gradient(90deg, #FF9A8B 0%, #FF6A88 55%, #FF99AC 100%);
183 | color: white;
184 | transform: rotateY(180deg);
185 | }
186 | #card2{
187 | background-color: #21D4FD;
188 | background-image: linear-gradient(19deg, #21D4FD 0%, #B721FF 100%);
189 | color: white;
190 | transform: rotateY(180deg);
191 | }
192 | #card3{
193 | background-color: #F4D03F;
194 | background-image: linear-gradient(132deg, #F4D03F 0%, #16A085 100%);
195 | color: black;
196 | transform: rotateY(180deg);
197 | }
198 | #card4{
199 | background-color: #FAD961;
200 | background-image: linear-gradient(90deg, #FAD961 0%, #F76B1C 100%);
201 | color: white;
202 | transform: rotateY(180deg);
203 | }
204 | footer {
205 | text-align: center;
206 | padding: 5px;
207 | background-color:#01002a;
208 | font-weight: 800;
209 | color: #eb9e34;
210 | }
--------------------------------------------------------------------------------
/src/main/resources/static/css/panda.css:
--------------------------------------------------------------------------------
1 | section {
2 | margin-top: 100px;
3 | }
4 | a, a:hover, a:focus, a:active {
5 | text-decoration: none;
6 | color: inherit;
7 | }
8 | .img
9 | {
10 | width:90%;
11 | padding: 0;
12 | margin: 0;
13 | vertical-align:top;
14 | }
15 | .navbar {
16 | height: 80px;
17 | background-color: transparent;
18 | border: none;
19 | color: white;
20 | z-index: 100;
21 | transition: background-color 1s ease 0s;
22 | }
23 | .navbar-default .navbar-brand {
24 | margin-top: 10px;
25 | color: black;
26 | }
27 | .navbar-default .navbar-brand:hover {
28 | color: black;
29 | border: 1px solid #C57ED3;
30 | }
31 | .navbar-default .navbar-nav > li > a {
32 | color: black;
33 | margin: 10px 5px 5px 5px;
34 | }
35 | .navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:active, .navbar-default .navbar-nav > li > a:focus {
36 | color: #C57ED3;
37 | border: 1px solid #C57ED3;
38 | }
39 | .navbar-default .navbar-nav > li > a:visited {
40 | color: #C57ED3;
41 | text-decoration: none;
42 | }
43 | .navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus {
44 | background-color: transparent;
45 | color: #C57ED3;
46 | }
47 | .navbar-default .navbar-toggle {
48 | border-color: #C57ED3;
49 | }
50 | .navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {
51 | background-color: #490D40;
52 | }
53 | .navbar-default .navbar-toggle .icon-bar {
54 | color: #C57ED3;
55 | background-color: #C57ED3;
56 | }
57 | .navbar-default .navbar-collapse.collapse.in ul {
58 | background-color: #490D40;
59 | }
60 | /* Solid class attached on scroll past first section */
61 | .navbar.solid {
62 | background-color: #490D40;
63 | transition: background-color 1s ease 0s;
64 | box-shadow: 0 0 4px grey;
65 | }
66 | .navbar.solid .navbar-brand {
67 | color: #C57ED3;
68 | transition: color 1s ease 0s;
69 | }
70 | .navbar.solid .navbar-nav > li > a {
71 | color: #C57ED3;
72 | transition: color 1s ease 0s;
73 | }
74 | .about {
75 | background-color: #C57ED3;
76 | color: #490D40;
77 | height: 600px;
78 | text-align: center;
79 | margin-top: -20px;
80 | }
81 | .about h2 {
82 | padding-top: 220px;
83 | }
84 | .about p {
85 | padding: 20px 80px;
86 | }
87 | @import url(https://fonts.googleapis.com/css?family=Dancing+Script|Roboto);
88 | *, *:after, *:before {
89 | box-sizing: border-box;
90 | }
91 |
92 | body {
93 | background-color:#01002a;
94 | text-align: center;
95 | font-family: 'Roboto', sans-serif;
96 | }
97 | .panda {
98 | position: relative;
99 | width: 200px;
100 | margin: 50px auto;
101 | }
102 | .face {
103 | width: 200px;
104 | height: 200px;
105 | background: #fff;
106 | border-radius: 100%;
107 | margin: 50px auto;
108 | box-shadow: 0 10px 15px rgba(0, 0, 0, 0.15);
109 | z-index: 50;
110 | position: relative;
111 | }
112 | .ear, .ear:after {
113 | position: absolute;
114 | width: 80px;
115 | height: 80px;
116 | background: #000;
117 | z-index: 5;
118 | border: 10px solid #fff;
119 | left: -15px;
120 | top: -15px;
121 | border-radius: 100%;
122 | }
123 | .ear:after {
124 | content: '';
125 | left: 125px;
126 | }
127 |
128 | .eye-shade {
129 | background: #000;
130 | width: 50px;
131 | height: 80px;
132 | margin: 10px;
133 | position: absolute;
134 | top: 35px;
135 | left: 25px;
136 | transform: rotate(220deg);
137 | border-radius: 25px/20px 30px 35px 40px;
138 | }
139 | .eye-shade.rgt {
140 | transform: rotate(140deg);
141 | left: 105px;
142 | }
143 |
144 | .eye-white {
145 | position: absolute;
146 | width: 30px;
147 | height: 30px;
148 | border-radius: 100%;
149 | background: #fff;
150 | z-index: 500;
151 | left: 40px;
152 | top: 80px;
153 | overflow: hidden;
154 | }
155 | .eye-white.rgt {
156 | right: 40px;
157 | left: auto;
158 | }
159 |
160 | .eye-ball {
161 | position: absolute;
162 | width: 0px;
163 | height: 0px;
164 | left: 20px;
165 | top: 20px;
166 | max-width: 10px;
167 | max-height: 10px;
168 | transition: 0.1s;
169 | }
170 | .eye-ball:after {
171 | content: '';
172 | background: #000;
173 | position: absolute;
174 | border-radius: 100%;
175 | right: 0;
176 | bottom: 0px;
177 | width: 20px;
178 | height: 20px;
179 | }
180 |
181 | .nose {
182 | position: absolute;
183 | height: 20px;
184 | width: 35px;
185 | bottom: 40px;
186 | left: 0;
187 | right: 0;
188 | margin: auto;
189 | border-radius: 50px 20px/30px 15px;
190 | transform: rotate(15deg);
191 | background: #000;
192 | }
193 |
194 | .body {
195 | background: #fff;
196 | position: absolute;
197 | top: 200px;
198 | left: -20px;
199 | border-radius: 100px 100px 100px 100px/126px 126px 96px 96px;
200 | width: 250px;
201 | height: 282px;
202 | box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3);
203 | }
204 |
205 | .hand, .hand:after, .hand:before {
206 | width: 40px;
207 | height: 30px;
208 | border-radius: 50px;
209 | box-shadow: 0 2px 3px rgba(0, 0, 0, 0.15);
210 | background: #000;
211 | margin: 5px;
212 | position: absolute;
213 | top: 70px;
214 | left: -25px;
215 | }
216 | .hand:after, .hand:before {
217 | content: '';
218 | left: -5px;
219 | top: 11px;
220 | }
221 | .hand:before {
222 | top: 26px;
223 | }
224 | .hand.rgt, .rgt.hand:after, .rgt.hand:before {
225 | left: auto;
226 | right: -25px;
227 | }
228 | .hand.rgt:after, .hand.rgt:before {
229 | left: auto;
230 | right: -5px;
231 | }
232 |
233 | .foot {
234 | top: 360px;
235 | left: -80px;
236 | position: absolute;
237 | background: #000;
238 | z-index: 1400;
239 | box-shadow: 0 5px 5px rgba(0, 0, 0, 0.2);
240 | border-radius: 40px 40px 39px 40px/26px 26px 63px 63px;
241 | width: 82px;
242 | height: 120px;
243 | }
244 | .foot:after {
245 | content: '';
246 | width: 55px;
247 | height: 65px;
248 | background: #222;
249 | border-radius: 100%;
250 | position: absolute;
251 | bottom: 10px;
252 | left: 0;
253 | right: 0;
254 | margin: auto;
255 | }
256 | .foot .finger, .foot .finger:after, .foot .finger:before {
257 | position: absolute;
258 | width: 25px;
259 | height: 35px;
260 | background: #222;
261 | border-radius: 100%;
262 | top: 10px;
263 | right: 5px;
264 | }
265 | .foot .finger:after, .foot .finger:before {
266 | content: '';
267 | right: 30px;
268 | width: 20px;
269 | top: 0;
270 | }
271 | .foot .finger:before {
272 | right: 55px;
273 | top: 5px;
274 | }
275 | .foot.rgt {
276 | left: auto;
277 | right: -80px;
278 | }
279 | .foot.rgt .finger, .foot.rgt .finger:after, .foot.rgt .finger:before {
280 | left: 5px;
281 | right: auto;
282 | }
283 | .foot.rgt .finger:after {
284 | left: 30px;
285 | right: auto;
286 | }
287 | .foot.rgt .finger:before {
288 | left: 55px;
289 | right: auto;
290 | }
291 |
292 | form {
293 | display: none;
294 | max-width: 400px;
295 | padding: 20px 40px;
296 | background: #fff;
297 | height: 300px;
298 | margin: auto;
299 | display: block;
300 | box-shadow: 0 10px 15px rgba(0, 0, 0, 0.15);
301 | transition: 0.3s;
302 | position: relative;
303 | transform: translateY(-100px);
304 | z-index: 500;
305 | border: 1px solid #eee;
306 | }
307 | form.up {
308 | transform: translateY(-150px);
309 | }
310 |
311 | h1 {
312 | color: #FF4081;
313 | font-family: 'Dancing Script', cursive;
314 |
315 | }
316 | span {
317 | color: #eb9e34;
318 | font-family: 'Dancing Script', cursive;
319 | font-size:25px;
320 | }
321 |
322 | .btn {
323 | background: #fff;
324 | padding: 5px;
325 | width: 150px;
326 | height: 35px;
327 | border: 1px solid #FF4081;
328 | margin-top: 25px;
329 | cursor: pointer;
330 | transition: 0.3s;
331 | box-shadow: 0 50px #FF4081 inset;
332 | color: #fff;
333 | }
334 | .btn:hover {
335 | box-shadow: 0 0 #FF4081 inset;
336 | color: #FF4081;
337 | }
338 | .btn:focus {
339 | outline: none;
340 | }
341 |
342 | .form-group {
343 | position: relative;
344 | font-size: 15px;
345 | color: #666;
346 | }
347 | .form-group + .form-group {
348 | margin-top: 30px;
349 | }
350 | .form-group .form-label {
351 | position: absolute;
352 | z-index: 1;
353 | left: 0;
354 | top: 5px;
355 | transition: 0.3s;
356 | }
357 | .form-group .form-control {
358 | width: 100%;
359 | position: relative;
360 | z-index: 3;
361 | height: 35px;
362 | background: none;
363 | border: none;
364 | padding: 5px 0;
365 | transition: 0.3s;
366 | border-bottom: 1px solid #777;
367 | color: #555;
368 | }
369 | .form-group .form-control:invalid {
370 | outline: none;
371 | }
372 | .form-group .form-control:focus, .form-group .form-control:valid {
373 | outline: none;
374 | box-shadow: 0 1px #FF4081;
375 | border-color: #FF4081;
376 | }
377 | .form-group .form-control:focus + .form-label, .form-group .form-control:valid + .form-label {
378 | font-size: 12px;
379 | color: #FF4081;
380 | transform: translateY(-15px);
381 | }
382 |
383 | .alert {
384 | position: absolute;
385 | color: #f00;
386 | font-size: 16px;
387 | right: -120px;
388 | top: -300px;
389 | z-index: 200;
390 | padding: 30px 25px;
391 | background: #fff;
392 | box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);
393 | border-radius: 50%;
394 | opacity: 0;
395 | transform: scale(0, 0);
396 | -moz-transition: linear 0.4s 0.6s;
397 | -o-transition: linear 0.4s 0.6s;
398 | -webkit-transition: linear 0.4s;
399 | -webkit-transition-delay: 0.6s;
400 | transition: linear 0.4s 0.6s;
401 | }
402 | .alert:after, .alert:before {
403 | content: '';
404 | position: absolute;
405 | width: 25px;
406 | height: 25px;
407 | background: #fff;
408 | left: -19px;
409 | bottom: -8px;
410 | box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
411 | border-radius: 50%;
412 | }
413 | .alert:before {
414 | width: 15px;
415 | height: 15px;
416 | left: -35px;
417 | bottom: -25px;
418 | }
419 |
420 | .wrong-entry {
421 | -webkit-animation: wrong-log 0.3s;
422 | animation: wrong-log 0.3s;
423 | }
424 | .wrong-entry .alert {
425 | opacity: 1;
426 | transform: scale(1, 1);
427 | }
428 | @-webkit-keyframes eye-blink {
429 | to {
430 | height: 30px;
431 | }
432 | }
433 | @keyframes eye-blink {
434 | to {
435 | height: 30px;
436 | }
437 | }
438 | @-webkit-keyframes wrong-log {
439 | 0%, 100% {
440 | left: 0px;
441 | }
442 | 20% , 60% {
443 | left: 20px;
444 | }
445 | 40% , 80% {
446 | left: -20px;
447 | }
448 | }
449 | @keyframes wrong-log {
450 | 0%, 100% {
451 | left: 0px;
452 | }
453 | 20% , 60% {
454 | left: 20px;
455 | }
456 | 40% , 80% {
457 | left: -20px;
458 | }
459 | }
460 |
--------------------------------------------------------------------------------
/src/main/resources/static/css/signup_style.css:
--------------------------------------------------------------------------------
1 | section {
2 | margin-top: 100px;
3 | }
4 | a, a:hover, a:focus, a:active {
5 | text-decoration: none;
6 | color: inherit;
7 | }
8 | span {
9 | color: #eb9e34;
10 | font-family: 'Dancing Script', cursive;
11 | font-size:25px;
12 | }
13 | .img
14 | {
15 | width:90%;
16 | padding: 0;
17 | margin: 0;
18 | vertical-align:top;
19 | }
20 | .navbar {
21 | height: 80px;
22 | background-color: transparent;
23 | border: none;
24 | color: white;
25 | z-index: 100;
26 | transition: background-color 1s ease 0s;
27 | }
28 | .navbar-default .navbar-brand {
29 | margin-top: 10px;
30 | color: black;
31 | }
32 | .navbar-default .navbar-brand:hover {
33 | color: black;
34 | border: 1px solid #C57ED3;
35 | }
36 | .navbar-default .navbar-nav > li > a {
37 | color: black;
38 | margin: 10px 5px 5px 5px;
39 | }
40 | .navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:active, .navbar-default .navbar-nav > li > a:focus {
41 | color: #C57ED3;
42 | border: 1px solid #C57ED3;
43 | }
44 | .navbar-default .navbar-nav > li > a:visited {
45 | color: #C57ED3;
46 | text-decoration: none;
47 | }
48 | .navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus {
49 | background-color: transparent;
50 | color: #C57ED3;
51 | }
52 | .navbar-default .navbar-toggle {
53 | border-color: #C57ED3;
54 | }
55 | .navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {
56 | background-color: #490D40;
57 | }
58 | .navbar-default .navbar-toggle .icon-bar {
59 | color: #C57ED3;
60 | background-color: #C57ED3;
61 | }
62 | .navbar-default .navbar-collapse.collapse.in ul {
63 | background-color: #490D40;
64 | }
65 |
66 | /* Solid class attached on scroll past first section */
67 | .navbar.solid {
68 | background-color: #490D40;
69 | transition: background-color 1s ease 0s;
70 | box-shadow: 0 0 4px grey;
71 | }
72 | .navbar.solid .navbar-brand {
73 | color: #C57ED3;
74 | transition: color 1s ease 0s;
75 | }
76 | .navbar.solid .navbar-nav > li > a {
77 | color: #C57ED3;
78 | transition: color 1s ease 0s;
79 | }
80 |
81 | .about {
82 | background-color: #C57ED3;
83 | color: #490D40;
84 | height: 600px;
85 | text-align: center;
86 | margin-top: -20px;
87 | }
88 | .about h2 {
89 | padding-top: 220px;
90 | }
91 | .about p {
92 | padding: 20px 80px;
93 | }
94 | @import url(https://fonts.googleapis.com/css?family=Dancing+Script|Roboto);
95 | *, *:after, *:before {
96 | box-sizing: border-box;
97 | }
98 | h1 {
99 | margin-top: 0 ;
100 | margin-bottom: 0;
101 | }
102 |
103 | body {
104 | background-color:#01002a;
105 | text-align: center;
106 | font-family: 'Roboto', sans-serif;
107 | }
108 |
109 | .panda {
110 | position: relative;
111 | width: 200px;
112 | margin: 50px auto;
113 | }
114 | .a
115 | {
116 | margin:0px;
117 | }
118 | .face {
119 | width: 200px;
120 | height: 200px;
121 | background: #fff;
122 | border-radius: 100%;
123 | margin: 50px auto;
124 | box-shadow: 0 10px 15px rgba(0, 0, 0, 0.15);
125 | z-index: 50;
126 | position: relative;
127 | }
128 | .ear, .ear:after {
129 | position: absolute;
130 | width: 80px;
131 | height: 80px;
132 | background: #000;
133 | z-index: 5;
134 | border: 10px solid #fff;
135 | left: -15px;
136 | top: -15px;
137 | border-radius: 100%;
138 | }
139 | .ear:after {
140 | content: '';
141 | left: 125px;
142 | }
143 | .eye-shade {
144 | background: #000;
145 | width: 50px;
146 | height: 80px;
147 | margin: 10px;
148 | position: absolute;
149 | top: 35px;
150 | left: 25px;
151 | transform: rotate(220deg);
152 | border-radius: 25px/20px 30px 35px 40px;
153 | }
154 | .eye-shade.rgt {
155 | transform: rotate(140deg);
156 | left: 105px;
157 | }
158 |
159 | .eye-white {
160 | position: absolute;
161 | width: 30px;
162 | height: 30px;
163 | border-radius: 100%;
164 | background: #fff;
165 | z-index: 500;
166 | left: 40px;
167 | top: 80px;
168 | overflow: hidden;
169 | }
170 | .eye-white.rgt {
171 | right: 40px;
172 | left: auto;
173 | }
174 |
175 | .eye-ball {
176 | position: absolute;
177 | width: 0px;
178 | height: 0px;
179 | left: 20px;
180 | top: 20px;
181 | max-width: 10px;
182 | max-height: 10px;
183 | transition: 0.1s;
184 | }
185 | .eye-ball:after {
186 | content: '';
187 | background: #000;
188 | position: absolute;
189 | border-radius: 100%;
190 | right: 0;
191 | bottom: 0px;
192 | width: 20px;
193 | height: 20px;
194 | }
195 |
196 | .nose {
197 | position: absolute;
198 | height: 20px;
199 | width: 35px;
200 | bottom: 40px;
201 | left: 0;
202 | right: 0;
203 | margin: auto;
204 | border-radius: 50px 20px/30px 15px;
205 | transform: rotate(15deg);
206 | background: #000;
207 | }
208 |
209 | .body {
210 | background: #fff;
211 | position: absolute;
212 | top: 200px;
213 | left: -20px;
214 | border-radius: 100px 100px 100px 100px/126px 126px 96px 96px;
215 | width: 265px;
216 | height: 288px;
217 | box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3);
218 | }
219 |
220 | .hand, .hand:after, .hand:before {
221 | width: 40px;
222 | height: 30px;
223 | border-radius: 50px;
224 | box-shadow: 0 2px 3px rgba(0, 0, 0, 0.15);
225 | background: #000;
226 | margin: 5px;
227 | position: absolute;
228 | top: 70px;
229 | left: -25px;
230 | }
231 | .hand:after, .hand:before {
232 | content: '';
233 | left: -5px;
234 | top: 11px;
235 | }
236 | .hand:before {
237 | top: 26px;
238 | }
239 | .hand.rgt, .rgt.hand:after, .rgt.hand:before {
240 | left: auto;
241 | right: -25px;
242 | }
243 | .hand.rgt:after, .hand.rgt:before {
244 | left: auto;
245 | right: -5px;
246 | }
247 |
248 | .foot {
249 | top: 400px;
250 | left: -100px;
251 | position: absolute;
252 | background: #000;
253 | z-index: 1400;
254 | box-shadow: 0 5px 5px rgba(0, 0, 0, 0.2);
255 | border-radius: 40px 40px 39px 40px/26px 26px 63px 63px;
256 | width: 80px;
257 | height: 110px;
258 | }
259 | .foot:after {
260 | content: '';
261 | width: 52px;
262 | height: 62px;
263 | background: #222;
264 | border-radius: 100%;
265 | position: absolute;
266 | bottom: 10px;
267 | left: 0;
268 | right: 0;
269 | margin: auto;
270 | }
271 | .foot .finger, .foot .finger:after, .foot .finger:before {
272 | position: absolute;
273 | width: 22px;
274 | height: 32px;
275 | background: #222;
276 | border-radius: 100%;
277 | top: 5px;
278 | right: 5px;
279 | }
280 | .foot .finger:after, .foot .finger:before {
281 | content: '';
282 | right: 30px;
283 | width: 20px;
284 | top: 0;
285 | }
286 | .foot .finger:before {
287 | right: 55px;
288 | top: 5px;
289 | }
290 | .foot.rgt {
291 | left: auto;
292 | right: -100px;
293 | }
294 | .foot.rgt .finger, .foot.rgt .finger:after, .foot.rgt .finger:before {
295 | left: 5px;
296 | right: auto;
297 | }
298 | .foot.rgt .finger:after {
299 | left: 30px;
300 | right: auto;
301 | }
302 | .foot.rgt .finger:before {
303 | left: 55px;
304 | right: auto;
305 | }
306 |
307 | form {
308 | display: none;
309 | max-width: 350px;
310 | padding: 10px 40px;
311 | background: #fff;
312 | height: 307px;
313 | margin: auto;
314 | display: block;
315 | box-shadow: 0 10px 15px rgba(0, 0, 0, 0.15);
316 | transition: 0.3s;
317 | position: relative;
318 | transform: translateY(-100px);
319 | z-index: 500;
320 | border: 1px solid #eee;
321 | }
322 | form.up {
323 | transform: translateY(-167px);
324 | }
325 |
326 | h1 {
327 | color: #FF4081;
328 | font-family: 'Dancing Script', cursive;
329 | }
330 |
331 | .btn {
332 | background: #fff;
333 | padding: 3px;
334 | width: 140px;
335 | height: 33px;
336 | border: 1px solid #FF4081;
337 | margin-top: -13px;
338 | cursor: pointer;
339 | transition: 0.3s;
340 | box-shadow: 0 50px #FF4081 inset;
341 | color: #fff;
342 | }
343 | .btn:hover {
344 | box-shadow: 0 0 #FF4081 inset;
345 | color: #FF4081;
346 | }
347 | .btn:focus {
348 | outline: none;
349 | }
350 |
351 | .form-group {
352 | position: relative;
353 | font-size: 15px;
354 | color: #666;
355 | }
356 | .form-group + .form-group {
357 | margin-top: 10px;
358 | }
359 | .form-group .form-label {
360 | position: absolute;
361 | z-index: 1;
362 | left: 0;
363 | top: 2px;
364 | transition: 0.3s;
365 | }
366 | .form-group .form-control {
367 | width: 100%;
368 | position: relative;
369 | z-index: 3;
370 | height: 35px;
371 | background: none;
372 | border: none;
373 | padding: 1px 0;
374 | transition: 0.3s;
375 | border-bottom: 1px solid #777;
376 | color: #555;
377 | }
378 | .form-group .form-control:invalid {
379 | outline: none;
380 | }
381 | .form-group .form-control:focus, .form-group .form-control:valid {
382 | outline: none;
383 | box-shadow: 0 1px #FF4081;
384 | border-color: #FF4081;
385 | }
386 | .form-group .form-control:focus + .form-label, .form-group .form-control:valid + .form-label {
387 | font-size: 12px;
388 | color: #FF4081;
389 | transform: translateY(-11px);
390 | }
391 |
392 | .alert {
393 | position: absolute;
394 | color: #f00;
395 | font-size: 16px;
396 | right: -80px;
397 | top: -150px;
398 | z-index: 200;
399 | padding: 30px 25px;
400 | background: #fff;
401 | box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2);
402 | border-radius: 50%;
403 | opacity: 0;
404 | transform: scale(0, 0);
405 | -moz-transition: linear 0.4s 0.6s;
406 | -o-transition: linear 0.4s 0.6s;
407 | -webkit-transition: linear 0.4s;
408 | -webkit-transition-delay: 0.6s;
409 | transition: linear 0.4s 0.6s;
410 | }
411 | .alert:after, .alert:before {
412 | content: '';
413 | position: absolute;
414 | width: 25px;
415 | height: 25px;
416 | background: #fff;
417 | left: -19px;
418 | bottom: -8px;
419 | box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
420 | border-radius: 50%;
421 | }
422 | .alert:before {
423 | width: 15px;
424 | height: 15px;
425 | left: -35px;
426 | bottom: -25px;
427 | }
428 |
429 | .wrong-entry {
430 | -webkit-animation: wrong-log 0.3s;
431 | animation: wrong-log 0.3s;
432 | }
433 | .wrong-entry .alert {
434 | opacity: 1;
435 | transform: scale(1, 1);
436 | }
437 | @-webkit-keyframes eye-blink {
438 | to {
439 | height: 30px;
440 | }
441 | }
442 | @keyframes eye-blink {
443 | to {
444 | height: 30px;
445 | }
446 | }
447 | @-webkit-keyframes wrong-log {
448 | 0%, 100% {
449 | left: 0px;
450 | }
451 | 20% , 60% {
452 | left: 20px;
453 | }
454 | 40% , 80% {
455 | left: -20px;
456 | }
457 | }
458 | @keyframes wrong-log {
459 | 0%, 100% {
460 | left: 0px;
461 | }
462 | 20% , 60% {
463 | left: 20px;
464 | }
465 | 40% , 80% {
466 | left: -20px;
467 | }
468 | }
469 |
--------------------------------------------------------------------------------
/src/main/resources/static/css/style.css:
--------------------------------------------------------------------------------
1 |
2 | .ashu input[type="submit"]:hover{
3 | cursor:pointer;
4 | background:#ffc107;
5 | color:#000;
6 | }
7 | img.image:hover,
8 | img.image:focus {
9 | width:99%;
10 | transition: 0.1s;
11 | cursor:pointer;
12 | }
13 |
14 | .grid
15 | {
16 | display:grid;
17 | grid-template-columns: repeat(auto-fill,minmax(400px,1fr));
18 | grid-gap: 20px;
19 | align-items: center;
20 | margin: 20px;
21 | }
22 |
23 | .grid article
24 | {
25 | border: 4px solid black;
26 | box-shadow: 2px 2px 8px 5px rgb(235,158,52);
27 | border-radius: 15px;
28 | }
29 | .grid article img
30 | {
31 | max-width: 100%;
32 | border-radius: 13px;
33 | }
34 | .grid article .text
35 | {
36 | padding: 0 0 0 20px;
37 | font-family: 'kelem',cursive;
38 | font-size:20px;
39 | margin-bottom: -10px;
40 | margin-top: -10px ;
41 | }
42 | .ashu
43 | {
44 | display: inline;
45 | }
46 | html
47 | {
48 | scroll-behavior: smooth;
49 | }
50 | *
51 | {
52 | padding: 0; margin: 0;
53 | }
54 | div
55 | {
56 | display: inline;
57 | }
58 | form
59 | {
60 | background: transparent;
61 | }
62 | section
63 | {
64 | margin-top: 100px;
65 | }
66 | a, a:hover, a:focus, a:active
67 | {
68 | text-decoration: none;
69 | color: inherit;
70 | }
71 | .link
72 | {
73 | color: #eb9e34;
74 | font-family: 'Dancing Script', cursive;
75 | font-size:25px;
76 | }
77 | .link1
78 | {
79 | color: #eb9e34;
80 | font-family: 'Dancing Script', cursive;
81 | font-size:15px;
82 | }
83 | .img
84 | {
85 | width:90%;
86 | padding: 0;
87 | margin: 0;
88 | vertical-align:top;
89 | }
90 | .navbar
91 | {
92 | height: 80px;
93 | background-color: transparent;
94 | border: none;
95 | color: white;
96 | z-index: 100;
97 | transition: background-color 1s ease 0s;
98 | }
99 | .navbar-default .navbar-brand
100 | {
101 | margin-top: 10px;
102 | color: black;
103 | }
104 | .navbar-default .navbar-brand:hover
105 | {
106 | /*color: #black;*/
107 | border: 1px solid #C57ED3;
108 | }
109 | .navbar-default .navbar-nav > li > a
110 | {
111 | color: black;
112 | margin: 10px 5px 5px 5px;
113 | }
114 | .navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:active, .navbar-default .navbar-nav > li > a:focus {
115 | color: #C57ED3;
116 | border: 1px solid #C57ED3;
117 | }
118 | .navbar-default .navbar-nav > li > a:visited
119 | {
120 | color: #C57ED3;
121 | text-decoration: none;
122 | }
123 | .navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus {
124 | background-color: transparent;
125 | color: #C57ED3;
126 | }
127 | .navbar-default .navbar-toggle {
128 | border-color: #C57ED3;
129 | }
130 | .navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus
131 | {
132 | background-color: #490D40;
133 | }
134 | .navbar-default .navbar-toggle .icon-bar
135 | {
136 | color: #C57ED3;
137 | background-color: #C57ED3;
138 | }
139 | .navbar-default .navbar-collapse.collapse.in ul
140 | {
141 | background-color: #490D40;
142 | }
143 |
144 | /* Solid class attached on scroll past first section */
145 | .navbar.solid
146 | {
147 | background-color: #490D40;
148 | transition: background-color 1s ease 0s;
149 | box-shadow: 0 0 4px grey;
150 | }
151 | .navbar.solid .navbar-brand
152 | {
153 | color: #C57ED3;
154 | transition: color 1s ease 0s;
155 | }
156 | .navbar.solid .navbar-nav > li > a
157 | {
158 | color: #C57ED3;
159 | transition: color 1s ease 0s;
160 | }
161 |
162 | .about
163 | {
164 | background-color: #C57ED3;
165 | color: #490D40;
166 | height: 600px;
167 | text-align: center;
168 | margin-top: -20px;
169 | }
170 | .about h2
171 | {
172 | padding-top: 220px;
173 | }
174 | .about p
175 | {
176 | padding: 20px 80px;
177 | }
178 | @import url(https://fonts.googleapis.com/css?family=Dancing+Script|Roboto);
179 | *, *:after, *:before {
180 | box-sizing: border-box;
181 | }
182 | h1 {
183 | margin-top: 0 ;
184 | margin-bottom: 0;
185 | }
186 |
187 | body {
188 |
189 | text-align: center;
190 | font-family: 'Roboto', sans-serif;
191 | }
192 |
193 | .panda {
194 | position: relative;
195 | width: 200px;
196 | margin: 50px auto;
197 | }
198 | .a
199 | {
200 |
201 | margin:0px;
202 | }
203 |
204 | .body {
205 | background: #fff;
206 | position: absolute;
207 | top: 200px;
208 | left: -20px;
209 | border-radius: 100px 100px 100px 100px/126px 126px 96px 96px;
210 | width: 250px;
211 | height: 282px;
212 | box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3);
213 | }
214 |
215 |
216 | h1 {
217 | color: #FF4081;
218 | font-family: 'Dancing Script', cursive;
219 | }
220 |
221 |
222 |
--------------------------------------------------------------------------------
/src/main/resources/static/image/Ashish.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ashish2030/Image-Hosting-Application-Using-Spring-Boot-Technology/2027d3e91ce8943b82e0035a4c07f810efeb1b6d/src/main/resources/static/image/Ashish.png
--------------------------------------------------------------------------------
/src/main/resources/static/image/arun_sir.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ashish2030/Image-Hosting-Application-Using-Spring-Boot-Technology/2027d3e91ce8943b82e0035a4c07f810efeb1b6d/src/main/resources/static/image/arun_sir.png
--------------------------------------------------------------------------------
/src/main/resources/static/image/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ashish2030/Image-Hosting-Application-Using-Spring-Boot-Technology/2027d3e91ce8943b82e0035a4c07f810efeb1b6d/src/main/resources/static/image/icon.png
--------------------------------------------------------------------------------
/src/main/resources/static/image/im.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ashish2030/Image-Hosting-Application-Using-Spring-Boot-Technology/2027d3e91ce8943b82e0035a4c07f810efeb1b6d/src/main/resources/static/image/im.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/image/important.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ashish2030/Image-Hosting-Application-Using-Spring-Boot-Technology/2027d3e91ce8943b82e0035a4c07f810efeb1b6d/src/main/resources/static/image/important.jpg
--------------------------------------------------------------------------------
/src/main/resources/static/image/maini.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ashish2030/Image-Hosting-Application-Using-Spring-Boot-Technology/2027d3e91ce8943b82e0035a4c07f810efeb1b6d/src/main/resources/static/image/maini.png
--------------------------------------------------------------------------------
/src/main/resources/static/image/n.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ashish2030/Image-Hosting-Application-Using-Spring-Boot-Technology/2027d3e91ce8943b82e0035a4c07f810efeb1b6d/src/main/resources/static/image/n.png
--------------------------------------------------------------------------------
/src/main/resources/static/image/pic1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ashish2030/Image-Hosting-Application-Using-Spring-Boot-Technology/2027d3e91ce8943b82e0035a4c07f810efeb1b6d/src/main/resources/static/image/pic1.png
--------------------------------------------------------------------------------
/src/main/resources/static/image/pic3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ashish2030/Image-Hosting-Application-Using-Spring-Boot-Technology/2027d3e91ce8943b82e0035a4c07f810efeb1b6d/src/main/resources/static/image/pic3.png
--------------------------------------------------------------------------------
/src/main/resources/static/image/rahul.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ashish2030/Image-Hosting-Application-Using-Spring-Boot-Technology/2027d3e91ce8943b82e0035a4c07f810efeb1b6d/src/main/resources/static/image/rahul.png
--------------------------------------------------------------------------------
/src/main/resources/static/image/tohan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ashish2030/Image-Hosting-Application-Using-Spring-Boot-Technology/2027d3e91ce8943b82e0035a4c07f810efeb1b6d/src/main/resources/static/image/tohan.png
--------------------------------------------------------------------------------
/src/main/resources/static/js/Upload_script.js:
--------------------------------------------------------------------------------
1 | $('#image').focusin(function(){
2 | $('form').addClass('up')
3 | setTimeout(function(){
4 | $('form').removeClass('up');
5 | },3000 );
6 | });
7 | $('#image').focusout(function(){
8 | $('form').removeClass('up')
9 | });
10 | $('#Description').focusin(function(){
11 | $('form').addClass('up')
12 | setTimeout(function(){
13 | $('form').removeClass('up');
14 | },3000 );
15 | });
16 |
17 |
18 | // Panda Eye move
19 | $( document ).on( "mousemove", function( event ) {
20 | var x = event.pageX/50;
21 | var y = event.pageY/25;
22 | $('.eye-ball').css({
23 | width : x,
24 | height : y
25 | });
26 | });
27 |
28 |
29 | // validation
30 | $('.btn').click(function()
31 | {
32 | var x=document.getElementById("title").value;
33 | var y=document.getElementById("tags").value;
34 | var a=document.getElementById("description").value;
35 | if(x.length<3||y.length<3||a.length<3||a>25||x.length>25||y.length>25)
36 | {
37 | document.getElementById("che").innerHTML="Invalid Input";
38 | }
39 | else
40 | {
41 | document.getElementById("che").innerHTML="Uploaded Successfully";
42 | }
43 | setTimeout(function(){
44 | $('form').removeClass('wrong-entry');
45 | },3000 );
46 | });
47 |
--------------------------------------------------------------------------------
/src/main/resources/static/js/edit_pagescript.js:
--------------------------------------------------------------------------------
1 | $('#image').focusin(function(){
2 | $('form').addClass('up')
3 | setTimeout(function(){
4 | $('form').removeClass('up');
5 | },1000 );
6 | });
7 | $('#image').focusout(function(){
8 | $('form').removeClass('up')
9 | });
10 | $('#Description').focusin(function(){
11 | $('form').addClass('up')
12 | setTimeout(function(){
13 | $('form').removeClass('up');
14 | },2000 );
15 | });
16 |
17 |
18 | // Panda Eye move
19 | $( document ).on( "mousemove", function( event ) {
20 | var x = event.pageX/50;
21 | var y = event.pageY/25;
22 | $('.eye-ball').css({
23 | width : x,
24 | height : y
25 | });
26 | });
27 |
28 |
29 | // validation
30 | $('.btn').click(function()
31 | {
32 | var x=document.getElementById("title").value;
33 | var y=document.getElementById("tags").value;
34 | var a=document.getElementById("Description").value;
35 | if(x.length==0||y.length==0||a.length==0)
36 | {
37 | document.getElementById("che").innerHTML="Invalid Input";
38 | }
39 | else
40 | {
41 | document.getElementById("che").innerHTML="Updated Successfully";
42 | }
43 |
44 | setTimeout(function(){
45 | $('form').removeClass('wrong-entry');
46 | },3000 );
47 | });
48 |
--------------------------------------------------------------------------------
/src/main/resources/static/js/index_style.js:
--------------------------------------------------------------------------------
1 | function autoType(elementClass, typingSpeed){
2 | var thhis = $(elementClass);
3 | thhis.css({
4 | "position": "relative",
5 | "display": "inline-block"
6 | });
7 | thhis.prepend('');
8 | thhis = thhis.find(".text-js");
9 | var text = thhis.text().trim().split('');
10 | var amntOfChars = text.length;
11 | var newString = "";
12 | thhis.text("|");
13 | setTimeout(function(){
14 | thhis.css("opacity",1);
15 | thhis.prev().removeAttr("style");
16 | thhis.text("");
17 | for(var i = 0; i < amntOfChars; i++){
18 | (function(i,char){
19 | setTimeout(function() {
20 | newString += char;
21 | thhis.text(newString);
22 | },i*typingSpeed);
23 | })(i+1,text[i]);
24 | }
25 | },1500);
26 | }
27 |
28 | $(document).ready(function(){
29 | // Now to start autoTyping just call the autoType function with the
30 | // class of outer div
31 | // The second paramter is the speed between each letter is typed.
32 | autoType(".type-js",200);
33 | });
--------------------------------------------------------------------------------
/src/main/resources/static/js/login1.js:
--------------------------------------------------------------------------------
1 | $('#password').focusin(function(){
2 | $('form').addClass('up')
3 | setTimeout(function(){
4 | $('form').removeClass('up');
5 | },2000 );
6 | });
7 | $('#password').focusout(function(){
8 | $('form').removeClass('up')
9 | });
10 |
11 | // Panda Eye move
12 | $(document).on( "mousemove", function( event ) {
13 | var dw = $(document).width() / 15;
14 | var dh = $(document).height() / 15;
15 | var x = event.pageX/ dw;
16 | var y = event.pageY/ dh;
17 | $('.eye-ball').css({
18 | width : x,
19 | height : y
20 | });
21 | });
22 |
23 | // validation
24 |
25 |
26 | $('.btn').click(function(){
27 | var x=document.getElementById("username").value;
28 | var y=document.getElementById("password").value;
29 | if(x.length==0||y.length==0)
30 | {
31 | document.getElementById("che").innerHTML="Invalid Input";
32 | }
33 | else
34 | {
35 | document.getElementById("che").innerHTML="Login Successful";
36 | }
37 |
38 | $('form').addClass('wrong-entry');
39 | setTimeout(function(){
40 | $('form').removeClass('wrong-entry');
41 | },3000 );
42 | });
43 | $(document).ready(function() {
44 | // Transition effect for navbar
45 | $(window).scroll(function() {
46 | // checks if window is scrolled more than 500px, adds/removes solid class
47 | if($(this).scrollTop() > 500) {
48 | $('.navbar').addClass('solid');
49 | } else {
50 | $('.navbar').removeClass('solid');
51 | }
52 | });
53 | });
--------------------------------------------------------------------------------
/src/main/resources/static/js/script.js:
--------------------------------------------------------------------------------
1 | $('#image').focusin(function(){
2 | $('form').addClass('up')
3 | });
4 | $('#Description').focusin(function(){
5 | $('form').addClass('up')
6 | });
7 | $('#image').focusout(function(){
8 | $('form').removeClass('up')
9 | });
10 | $('#Description').focusout(function(){
11 | $('form').removeClass('up')
12 | });
13 |
14 | // Panda Eye move
15 | $( document ).on( "mousemove", function( event ) {
16 | var x = event.pageX/50;
17 | var y = event.pageY/25;
18 | $('.eye-ball').css({
19 | width : x,
20 | height : y
21 | });
22 | });
23 |
24 | // validation
25 |
26 |
27 | $('.btn').click(function(){
28 | $('form').addClass('wrong-entry');
29 | setTimeout(function(){
30 | $('form').removeClass('wrong-entry');
31 | },3000 );
32 | });
--------------------------------------------------------------------------------
/src/main/resources/static/js/signup_script.js:
--------------------------------------------------------------------------------
1 | $('#password').focusin(function(){
2 | $('form').addClass('up')
3 | });
4 | $('#password').focusout(function(){
5 | $('form').removeClass('up')
6 | });
7 | // Panda Eye move
8 | $( document ).on( "mousemove", function( event ) {
9 | var x = event.pageX/50;
10 | var y = event.pageY/25;
11 | $('.eye-ball').css({
12 | width : x,
13 | height : y
14 | });
15 | });
16 |
17 | // validation
18 | $('.btn').click(function()
19 | {
20 | var x=document.getElementById("username").value;
21 | var y=document.getElementById("fullName").value;
22 | var z=document.getElementById("email").value;
23 | var a=document.getElementById("number").value;
24 | var b=document.getElementById("password").value;
25 |
26 | if(x.length<3||y.length<3||z.length<10||b.length==0||x==null||a.length!=10)
27 | {
28 | document.getElementById("che").innerHTML="Invalid Input";
29 | console.log("k");
30 | }
31 | else
32 | {
33 | document.getElementById("che").innerHTML="Account Successfully Created";
34 | }
35 | $('form').addClass('wrong-entry');
36 | setTimeout(function(){
37 | $('form').removeClass('wrong-entry');
38 | },3000 );
39 | });
40 |
41 |
42 |
--------------------------------------------------------------------------------
/src/main/resources/templates/Edit_Page/edit_page.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | 𝐈𝐦𝐚𝐠𝐞 𝐇𝐨𝐬𝐭𝐞𝐫
12 |
13 |
14 |
15 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
45 |
46 |
49 |
50 |
51 |
52 |
53 |
56 |
59 |
60 |
88 |
104 |
105 |
106 |
107 |
108 |
109 |
--------------------------------------------------------------------------------
/src/main/resources/templates/Login/login_page.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | 𝐈𝐦𝐚𝐠𝐞 𝐇𝐨𝐬𝐭𝐞𝐫
13 |
14 |
15 |
16 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
45 |
46 |
49 |
50 |
51 |
52 |
53 |
56 |
59 |
60 |
75 |
76 |
77 | Success! Operation performed successfully.
78 |
79 |
80 | Failure! Operation failed. Please try again
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/src/main/resources/templates/Print/print.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | 𝐈𝐦𝐚𝐠𝐞 𝐇𝐨𝐬𝐭𝐞𝐫
12 |
13 |
14 |
15 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
![Avatar]()
45 |
46 |
47 | Title:
48 | Tags:
49 | Description:
50 | Posted On:
51 |
52 |
53 |
56 |
57 |
58 |
59 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/src/main/resources/templates/Signup/signup.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | 𝐈𝐦𝐚𝐠𝐞 𝐇𝐨𝐬𝐭𝐞𝐫
12 |
13 |
14 |
15 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
44 |
45 |
48 |
49 |
50 |
51 |
52 |
55 |
58 |
59 |
94 |
95 |
96 |
97 |
98 |
99 |
--------------------------------------------------------------------------------
/src/main/resources/templates/Upload/Upload.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | Assignment 2
12 |
13 |
14 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
44 |
45 |
48 |
49 |
50 |
51 |
52 |
55 |
58 |
59 |
86 |
102 |
103 |
104 |
105 |
106 |
--------------------------------------------------------------------------------
/src/main/resources/templates/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | 𝐈𝐦𝐚𝐠𝐞 𝐇𝐨𝐬𝐭𝐞𝐫
14 |
15 |
16 |
17 |
18 |
38 |
39 |
40 |
41 |
42 |
43 |
![Background Cover Image]()
44 |
45 |
46 |
47 |
48 |
49 | About Us
50 |
51 |
52 |
53 |
54 |
55 |
![Avatar]()
56 |
57 |
58 |
𝐀𝐫𝐮𝐧 𝐊𝐮𝐝𝐢𝐲𝐚𝐥
59 |
60 |
𝐀𝐁𝐎𝐔𝐓 : 𝐒𝐮𝐛𝐣𝐞𝐜𝐭 𝐌𝐚𝐭𝐭𝐞𝐫 𝐄𝐱𝐩𝐞𝐫𝐭|𝐀𝐩𝐩𝐥𝐞 𝐈𝐧𝐜.|𝐓𝐞𝐜𝐡. 𝐄𝐧𝐭𝐡𝐮𝐬𝐢𝐚𝐬𝐭|𝐓𝐞𝐜𝐡𝐧𝐢𝐜𝐚𝐥 𝐈𝐧𝐬𝐭𝐫𝐮𝐜𝐭𝐨𝐫|𝐄𝐝𝐮𝐜𝐚𝐭𝐢𝐨𝐧𝐚𝐥𝐢𝐬𝐭|𝐌𝐞𝐧𝐭𝐨𝐫|𝐅𝐫𝐢𝐞𝐧𝐝
61 |
62 |
𝐑𝐎𝐋𝐄 : ᴍᴇɴᴛᴏʀ(ᴜᴘɢʀᴀᴅ) Linkdin Profile
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
![Avatar]()
71 |
72 |
73 |
𝐑𝐚𝐡𝐮𝐥 𝐊𝐮𝐦𝐚𝐫
74 |
75 |
𝐀𝐁𝐎𝐔𝐓: 𝐒𝐨𝐟𝐭𝐰𝐚𝐫𝐞 𝐄𝐧𝐠𝐢𝐧𝐞𝐞𝐫 𝐚𝐭 𝐕𝐞𝐥𝐨𝐭𝐢𝐨 𝐓𝐞𝐜𝐡𝐧𝐨𝐥𝐨𝐠𝐢𝐞𝐬
76 |
77 |
𝐑𝐎𝐋𝐄: 𝐔𝐩𝐠𝐫𝐚𝐝(𝐌𝐞𝐧𝐭𝐨𝐫): Linkdin Profile
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
![Avatar]()
86 |
87 |
88 |
𝐍𝐢𝐭𝐢𝐤𝐚 𝐒𝐡𝐚𝐫𝐦𝐚
89 |
90 |
𝐀𝐁𝐎𝐔𝐓: 𝐏𝐫𝐨𝐠𝐫𝐚𝐦 𝐀𝐬𝐬𝐨𝐜𝐢𝐚𝐭𝐞 𝐚𝐭 𝐮𝐩𝐆𝐫𝐚𝐝;
91 |
92 |
𝐑𝐎𝐋𝐄: 𝐔𝐩𝐠𝐫𝐚𝐝(𝐏𝐫𝐨𝐠𝐫𝐚𝐦 𝐀𝐬𝐬𝐨𝐜𝐢𝐚𝐭𝐞) Linkdin Profile
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
![Avatar]()
103 |
104 |
105 |
𝐀𝐬𝐡𝐢𝐬𝐡 𝐊𝐮𝐦𝐚𝐫
106 |
107 |
𝐀𝐁𝐎𝐔𝐓: 𝐅𝐮𝐥𝐥 𝐒𝐭𝐚𝐜𝐤 𝐃𝐞𝐯𝐞𝐥𝐨𝐩𝐞𝐫||⭐⭐⭐⭐⭐ 𝐚𝐭 𝐇𝐚𝐜𝐤𝐞𝐫𝐫𝐚𝐧𝐤||⭐⭐ 𝐚𝐭 𝐂𝐨𝐝𝐞𝐂𝐡𝐞𝐟||𝐌𝐞𝐧𝐭𝐨𝐫 𝐚𝐭 𝐆𝐢𝐫𝐥𝐒𝐜𝐫𝐢𝐩𝐭 𝐒𝐮𝐦𝐦𝐞𝐫 𝐨𝐟 𝐂𝐨𝐝𝐞||𝐁𝐚𝐜𝐤-𝐞𝐧𝐝 𝐥𝐨𝐯𝐞𝐫
108 |
109 |
𝐑𝐎𝐋𝐄: ᴘʀᴏᴊᴇᴄᴛ ᴀᴅᴍɪɴ Linkdin Profile
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
131 |
132 |
133 |
134 |
--------------------------------------------------------------------------------
/src/main/resources/templates/layout.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
13 |
14 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/main/resources/templates/users/registration.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
72 | Signup- Image Hoster
73 |
74 |
75 |
76 |
77 | Upload Image
78 | Please Register
79 | Ashish Arya
80 | Login
81 | Signup
82 |
83 |
84 |
98 |
99 |
100 |
101 |
--------------------------------------------------------------------------------
/src/test/java/com/imagehoster/ImageHosterApplication/ImageHosterApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.imagehoster.ImageHosterApplication;
2 |
3 | import org.junit.jupiter.api.Test;
4 | import org.springframework.boot.test.context.SpringBootTest;
5 |
6 | @SpringBootTest
7 | class ImageHosterApplicationTests {
8 |
9 | @Test
10 | void contextLoads() {
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------