/tamra_server

SNS Timeline Service built with Spring Boot : Tamra

Primary LanguageJavaMIT LicenseMIT


TAMRA

Social Network Service for everyone

with Spring Boot

 

Table of Contents

 

About The Project

IMG_3790


모두가 편리하게 사용할 SNS 서비스, 탐라 Tamra

 

Built With

 

Dependencies for Server

dependencies {    
	implementation 'org.springframework.boot:spring-boot-starter-web'  
	implementation 'org.springframework.boot:spring-boot-starter-web-services'  
	compile 'commons-io:commons-io:2.6'    
	compile group: 'com.google.guava', name: 'guava', version: '28.0-jre'  
	compile group: 'org.javassist', name: 'javassist', version: '3.25.0-GA'  
	compile group: 'commons-fileupload', name: 'commons-fileupload', version: '1.4'  
	compile group: 'com.amazonaws', name: 'aws-java-sdk', version: '1.11.602'  
	compile fileTree(dir: 'ext_libs', include: ['*.jar'])    
	compile 'org.springframework.boot:spring-boot-starter-thymeleaf'  
	annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'  
	compile('org.springframework.boot:spring-boot-starter-batch')  
        compile group: 'org.quartz-scheduler', name: 'quartz', version: '2.3.2'  
	compile group: 'org.springframework', name: 'spring-context-support', version: '5.2.1.RELEASE'  
	compile('org.springframework.boot:spring-boot-configuration-processor')  
        implementation 'com.google.code.gson:gson:2.8.6'

	//db connection
	compile group: 'org.apache.tomcat', name: 'tomcat-jdbc', version: '7.0.19'  
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'  
	implementation 'org.springframework.boot:spring-boot-starter-jdbc'
	implementation 'org.springframework.session:spring-session-jdbc'  
	runtimeOnly 'mysql:mysql-connector-java'    
	compile group: 'mysql', name: 'mysql-connector-java', version: '8.0.16'  
	compile group: 'com.zaxxer', name: 'HikariCP', version: '3.3.1'
	
	//lombok
	annotationProcessor 'org.projectlombok:lombok'  
	compile 'org.projectlombok:lombok'

	//authentication
	compile 'org.springframework.boot:spring-boot-starter-security'  
	compile group: 'org.springframework.security', name: 'spring-security-web', version: '5.1.5.RELEASE'  
	compile 'org.springframework.security:spring-security-config:5.1.5.RELEASE'  
	compile 'io.jsonwebtoken:jjwt:0.9.0'  
      
        // document
        implementation 'io.springfox:springfox-swagger2:2.9.2'  
	implementation 'io.springfox:springfox-swagger-ui:2.9.2' 

	//test
	testImplementation 'org.springframework.boot:spring-boot-starter-test'  
	testImplementation 'io.projectreactor:reactor-test'
}

 

Getting Started

Prerequisites

For development, you will only need jdk-1.8

Java

  • Openjdk installation on Mac

    1. Just go on official adopt-openjdk website and download the installer.

    2. You can install it easily with homebrew.

     $ brew tap AdoptOpenJDK/openjdk
     $ brew cask install adoptopenjdk8
    

 

  • Check your java version

    If the installation was successful, you should be able to get like this.

     $ java -version
    
     java version "1.8.0_221"
     Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
     Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
    

 

Start Tamra locally

  1. Clone the repo
$ git clone https://github.com/juhyeon96/Sns-timeline.git
  1. Move to project directory
$ cd Sns-timeline
  1. Build without test : gradle
$ ./gradlew build -x test
  1. Run Tamra
$ java -jar build/libs/*.jar

 

Details

Features

  1. security filter
    • check accesstoken / kakao accesstoken
    • renew accesstoken / kakao refreshtoken and accesstoken
  2. membership
    • sign up/ in/ out
    • kakao sign up/ in/ out
    • upload/edit user image
    • edit user info
    • validation
    • manage alarm
    • search user
  3. follow
    • follow
    • unfollow
    • alarm
    • search friend list
  4. post
    • post create/ read/ update/ delete
    • manage show level of each post
    • upload/ delete images
    • comment create/ read/ update/ delete
    • like/ cancel like to post
    • list liked-user to post
    • tag friends
    • alarm : about tag
  5. newsfeed
    • get user-profile
      • total post
      • total followers
      • total following
      • post list
    • main page
      • my posts
      • friends' posts for followers/public
      • my news of like/ comment
      • friends' news of like/ comment

Deploy

Document

  1. Swagger
  2. Github Wiki  

Demo

  1. timeline & user profile   image2    

  2. post create  

스크린샷 2020-01-20 오후 9 45 10    
  1. newsfeed  
스크린샷 2020-01-20 오후 9 46 26    
  1. alarm  
스크린샷 2020-01-20 오후 9 52 12    

 

Contact